Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


darkAge, мне непонятен смысл «длительностью к примеру 10 секунд»: одного раза вполне достаточно.

Пробуйте (не проверялось):
читать дальше »
Код: Выделить весь код
Option Explicit

Const lngInterval  = 300 ' (5 * 60) seconds
Const lngFrequency =  10 ' every 10 seconds


Dim strAddress

Dim objSWbemServicesEx
Dim objSWbemObjectEx

Dim lngCurrentInterval


strAddress = "MyServer" ' or IP address

Set objSWbemServicesEx = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\cimv2")

lngCurrentInterval = 0

Do
	For Each objSWbemObject In objSWbemServicesEx.ExecQuery("SELECT * FROM Win32_PingStatus WHERE Address = '" & strAddress & "'")
		If Not IsNull(objSWbemObject.StatusCode) Then
			If objSWbemObject.StatusCode = 0 Then
				lngCurrentInterval = 0
			End If
		End If
	Next
	
	If lngCurrentInterval >= lngInterval Then
		objSWbemServicesEx.Security_.Privileges.AddAsString "SeShutdownPrivilege", True
		
		For Each objSWbemObject In objSWbemServicesEx.ExecQuery("SELECT * FROM Win32_OperatingSystem")
			objSWbemObject.Shutdown
		Next
		
		Exit Do
	End If
	
	WScript.Sleep lngFrequency
	
	lngCurrentInterval = lngCurrentInterval + lngFrequency
Loop

Set objSWbemServicesEx = Nothing

WScript.Quit 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:36, 12-07-2013 | #4