Скрипт не перезагружает удаленные машины. Цель состоит в том, чтобы запустить это с сервера и перезапустить несколько машин - PullRequest
0 голосов
/ 10 апреля 2020

Запускается, но не перезагружает машины. Я не могу понять, почему это не перезапустит машины.

Option Explicit
call FixedArray

sub FixedArray
dim strCompName(16)
strCompName(0) = "X"
strCompName(1) = "Y"
dim strShutdown
Dim objShell
Dim i
for i = 0 to UBound(strCompName)
    strShutdown = "shutdown -r -t 0 -f -m\\" & strCompName(i)
Set objShell = CreateObject("WScript.Shell")
objShell.Run strShutdown
WScript.Quit    
next
end sub

1 Ответ

0 голосов
/ 11 апреля 2020

Запуск сценария:

  • вызывает shutdown -r -t 0 -f -m\\X (синтаксическая ошибка: возможно, отсутствует пробел в -m \\X?), А
  • выполняет WScript.Quit немедленно, так что for-next l oop ухудшается.

После устранения вышеуказанных ошибок скрипт вызывает:

  • shutdown -r -t 0 -f -m \\X
  • shutdown -r -t 0 -f -m \\Y
  • , а затем shutdown -r -t 0 -f -m \\ (неверно) несколько раз, поскольку strCompName(i) равно Empty для каждого i между 2 и 16.

Сценарий может быть следующим (в версии отладки с комментариями objShell.Run strShutdown):

Option Explicit
Dim sR
sR = Wscript.ScriptName 
call FixedArray
Wscript.Echo sR
WScript.Quit    

sub FixedArray
  dim strCompName(16)
  strCompName(0) = "X"
  strCompName(1) = "Y"
  dim strShutdown
  Dim objShell
  Set objShell = CreateObject("WScript.Shell") 
  Dim i
  for i = 0 to UBound(strCompName)
    If VarType(strCompName(i)) = 8 Then         ' 8 = String '
      strShutdown = "shutdown -r -t 0 -f -m \\" & strCompName(i)
      '' objShell.Run strShutdown
      sR = sR & vbNewLine & CStr(i) & vbTab & strShutDown
    End If
  next
end sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...