Как запускать команды WMI на сервере, не присоединенном к домену, из сценария, выполняемого с использованием учетных данных администратора домена - PullRequest
0 голосов
/ 21 июня 2019

У меня есть скрипт Windows, запускаемый из запланированного задания, настроенный для запуска с учетными данными домена.

Он проверяет дисковое пространство на всех серверах, подключенных к моему домену, с помощью WMI.

Set wmi = GetObject("winmgmts:\\" & hostname & "\root\cimv2")
...

Set wmiresults = wmi.ExecQuery("SELECT * FROM Win32_LogicalDisk WHERE Name = '" & _
    UCase(diskletter) & ":'")

For Each wmiresult In wmiresults
    ptotalspace = Round(CDbl(wmiresult.Size) / 1073741824, 2) 
    pfreespace = Round(CDbl(wmiresult.Freespace) / 1073741824, 2) 
Next

Этот скрипт прекрасно работает для всех серверов, к которым присоединен домен. Но мне нужно включить в эту проверку сервер, не присоединенный к домену, и он завершается неудачно, поскольку у сценария отсутствуют необходимые разрешения на целевом сервере.

Я попробовал хакерский метод создания учетной записи локального пользователя с тем же именем и паролем, что и у администратора домена, и добавления ее к локальным администраторам, но это не сработало.

Есть ли способ разрешить сценарию разрешать проверку дисков сервера, не присоединяя его к домену и не создавая дубликат или версию этого сценария, которая запускается с использованием локальной учетной записи с разрешением для выполнения этой проверки?

1 Ответ

1 голос
/ 21 июня 2019

Решение здесь: Удаленное подключение к WMI с помощью VBScript

Посмотрите на вариант 2 под заголовком «Для подключения к удаленной системе с помощью VBScript». Вы можете использовать метод SWbemLocator.ConnectServer для передачи различных учетных данных в соединение. Это выглядит так:

strComputer = "Computer_B"
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, _
                                                     "Root\CIMv2", _
                                                     "fabrikam\administrator", _
                                                     "password")

Просто замените "fabrikam \ administrator" и "пароль" на имя пользователя и пароль, которые имеют разрешение на этом компьютере. Затем вы можете использовать этот объект objSWbemServices так же, как вы использовали свой объект wmi.

Это должно работать, если вы запускаете его с компьютера внутри домена тоже ... Я думаю. Попробуйте.

...