Я пытаюсь запустить простую утилиту cmd на удаленном сервере Windows из vbscript, вызвав класс Win32_Process , например:
serverIP = "10.0.0.3"
Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & serverIP & "\root\cimv2:Win32_Process")
RunCommand = "cmd.exe /c echo hello >c:\hello.txt"
wscript.echo RunCommand
intReturn = oWMI.Create(RunCommand, Null, Null, intProcessID)
wscript.echo intReturn
Select Case intReturn
Case 0 Wscript.Echo "Successful"
Case 2 Wscript.Echo "Access denied"
Case 3 Wscript.Echo "Insufficient privilege"
Case 8 Wscript.Echo "Unknown failure"
Case 9 Wscript.Echo "Path not found"
Case 21 Wscript.Echo "Invalid parameter"
Case Else Wscript.Echo "Unable to execute for unknown reason"
End Select
Это всегда дает сбой при недостаточных привилегиях (код возврата 3).
Кто-нибудь может увидеть, что я делаю не так? Сценарий запускается из сеанса cmd, вызываемого администратором домена, поэтому он должен работать нормально, если в безопасности WMI нет чего-то, что я не до конца понимаю.
Вероятно, найдутся люди, которые предложат PSEXEC. Я знаю об этом и могу вернуться к этому. Но это похоже на решаемую проблему как таковую, и я бы не стал создавать зависимости для внешних исполняемых файлов для этого сценария.
Я упомяну несколько вещей, которые я пробовал.
- Этот парень говорит, что может быть проблема, если профиль не загружен. У меня та же проблема, даже если вызывающий пользователь (администратор домена) вошел в обе системы.
- В этой ветке Ричард Мюллер отмечает, что нужно указать и impersonationlevel = impersonate, и authenticationlevel = Pkt. Я попробовал это. Все еще не идти.
- На этой странице кажется, что нужно указать NT права , необходимые внутри моникера. Я попытался указать SeInteractiveLogonRight, SeNetworkLogonRight, SeBackupPrivilege, SeRestorePrivilege, SeDebugPrivilege и SeChangeNotifyPrivilege. Ничего не сработало.
Обычная тема, которую я заметил при поиске в Google, заключается в том, что люди видят эту проблему на некоторых целевых компьютерах, но не на других. Таким образом, мне кажется, что в сущности не хватает полного разрушения безопасности, необходимого для выполнения этой задачи. Леденец будет с благодарностью отправлен тому, кто сможет обеспечить такую поломку окончательно!
Напрасно надеясь, что это увеличит количество зрителей, я собираюсь добавить здесь тег .net, поскольку пользователи .net часто имеют дело с теми же проблемами WMI и могут иметь представление.
Awww. Удар, это не станет перекати не так ли?