Удаленное подключение к WMI с помощью VBScript
Вы можете создать удаленное подключение к WMI с помощью VBScript, создав объект подключения. Этот объект содержит имя компьютера, пространство имен WMI, к которому вы хотите подключиться, а также все соответствующие учетные данные и уровни проверки подлинности.
Подключение к удаленной системе с помощью VBScript
Укажите сведения о подключении, такие как имя удаленного компьютера, учетные данные и уровень проверки подлинности для подключения.
Если вы подключаетесь к удаленному компьютеру, используя те же учетные данные (домен и имя пользователя), с помощью которых вы выполнили вход, вы можете указать сведения о подключении в моникереGetObject, как описано в следующем примере кода.
strComputer = "Computer_B" Set objWMIService = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & strComputer & "\Root\CIMv2")
Вообще говоря, следует указать пространство имен WMI для подключения на удаленном компьютере. Это связано с тем, что пространство имен по умолчанию может отличаться на разных компьютерах. Указание пространства имен гарантирует подключение к одному и тому же пространству имен на всех компьютерах.
Дополнительные сведения о константах VBScript и строках скриптов для использования подключения моникера см. в разделе Настройка уровня безопасности процесса по умолчанию с помощью VBScript.
Если вы подключаетесь к удаленному компьютеру в другом домене или используете другое имя пользователя и пароль, необходимо использовать метод SWbemLocator.ConnectServer .
Как и в случае с моникером, вы используете ConnectServer , чтобы указать учетные данные, уровень проверки подлинности и пространство имен для удаленного подключения. В следующем примере кода описывается использование ConnectServer для доступа к удаленному компьютеру с помощью учетной записи администратора и пароля.
strComputer = "Computer_B" Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, _ "Root\CIMv2", _ "fabrikam\administrator", _ "password")
При использовании функции ConnectServer для удаленных подключений настройте олицетворение и проверку подлинности для объекта безопасности, полученного при вызове SWbemServices.Security. Для указания уровня олицетворения можно использовать перечисление WbemImpersonationLevelEnum .
В следующем примере кода задается уровень олицетворения для предыдущего примера кода VBScript.
objSWbemServices.Security_.ImpersonationLevel = 3
Обратите внимание, что для некоторых подключений требуется определенный уровень проверки подлинности. Дополнительные сведения см. в разделах Настройка безопасности клиентских процессов приложений и Защита клиентов сценариев.
В частности, следует задать для уровня проверки подлинности значение RPC_C_AUTHN_LEVEL_PKT_PRIVACY или 6, если для пространства имен, к которому вы подключаетесь на удаленном компьютере, требуется зашифрованное подключение, прежде чем оно вернет данные. Вы также можете использовать этот уровень проверки подлинности, даже если он не требуется для пространства имен. Это гарантирует, что данные шифруются по мере того, как они пересекают сеть. При попытке задать более низкий уровень проверки подлинности, чем разрешено, будет возвращено сообщение об отказе в доступе. Дополнительные сведения см. в разделе Требование зашифрованного подключения к пространству имен.
После установки подключения вы можете продолжить доступ к данным WMI. Дополнительные сведения см. в разделе Задачи WMI для сценариев и приложений.
Примеры
Более крупный пример VBScript см. в разделе Примеры на странице справочника по SWbemLocator.ConnectServer .
В следующем примере кода VBScript выполняется подключение к группе удаленных компьютеров в том же домене путем создания массива имен удаленных компьютеров, а затем отображения имен Plug and Play устройств (экземпляров Win32_PnPEntity) на каждом компьютере. Для выполнения приведенного ниже скрипта необходимо быть администратором на удаленных компьютерах. Обратите внимание, что "\\", необходимое перед добавлением имени удаленного компьютера скриптом после параметра уровня олицетворения. Дополнительные сведения о путях WMI см. в разделе Описание расположения объекта WMI.
On Error Resume Next
arrComputers = Array("Computer1","Computer2","Computer3")
For Each strComputer In arrComputers
WScript.Echo
WScript.Echo "===================================="
WScript.Echo "Computer: "& strComputer
WScript.Echo "===================================="
Set objWMIService = GetObject("winmgmts:\\" & strComputer& "\Root\CIMv2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PnPEntity",,48)
For Each objItem in colItems
Wscript.Echo "-----------------------------------"
Wscript.Echo "Win32_PnPEntity instance"
Wscript.Echo "-----------------------------------"
Wscript.Echo "Name: "& objItem.Name
Wscript.Echo "Status: "& objItem.Status
Next
Next
Следующий пример кода VBScript позволяет подключиться к удаленному компьютеру, используя другие учетные данные. Например, удаленный компьютер в другом домене или подключение к удаленному компьютеру, для которого требуется другое имя пользователя и пароль. В этом случае используйте подключение SWbemServices.ConnectServer .
' Full Computer Name
' can be found by right-clicking My Computer,
' then click Properties, then click the Computer Name tab)
' or use the computer's IP address
strComputer = "FullComputerName"
strDomain = "DOMAIN"
Wscript.StdOut.Write "Please enter your user name:"
strUser = Wscript.StdIn.ReadLine
Set objPassword = CreateObject("ScriptPW.Password")
Wscript.StdOut.Write "Please enter your password:"
strPassword = objPassword.GetPassword()
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, _
"Root\CIMv2", _
strUser, _
strPassword, _
"MS_409", _
"ntlmdomain:" + strDomain)
Set colSwbemObjectSet = objSWbemServices.ExecQuery("Select * From Win32_Process")
For Each objProcess in colSWbemObjectSet
Wscript.Echo "Process Name: " & objProcess.Name
Next
Связанные темы