Получение данных с удаленного компьютера
Вы можете получить данные или управлять ресурсами на удаленных компьютерах, а также на локальном компьютере. Подключение к удаленному компьютеру в скрипте удаленного управления Windows очень похоже на локальное подключение. Доступны данные экземпляра WMI. Если удаленный компьютер имеет оборудование BMC, которое может взаимодействовать с помощью протокола WS-Management, то также доступны данные интерфейса интеллектуального управления платформой (IPMI ). Дополнительные сведения см. в разделе Windows удаленного управления и WMI и удаленного управления оборудованием.
Возможно, потребуется создать объект ConnectionOptions , чтобы указать сведения о типе проверки подлинности, запрошенной для входа.
Если учетная запись на удаленном компьютере имеет одинаковые имя пользователя и пароль для входа, вам потребуется только транспорт, доменное имя и имя компьютера. Из-за контроля учетных записей (UAC) удаленная учетная запись должна быть учетной записью домена и членом группы администраторов удаленных компьютеров. Если учетная запись является членом локального компьютера в группе "Администраторы", UAC не разрешает доступ к службе WinRM. Чтобы получить доступ к удаленной службе WinRM в рабочей группе, необходимо отключить фильтрацию UAC для локальных учетных записей, создав следующую запись реестра DWORD и задав для нее значение 1: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] LocalAccountTokenFilterPolicy.
Подключение к удаленному компьютеру с помощью имени пользователя и пароля для входа
Укажите целевой компьютер с полным доменным именем или IP-адресом и назначьте его константе. Если указан IPv6-адрес, адрес должен быть заключен в квадратные скобки.
Const RemoteComputer = "ComputerName.domain.com"
Создание объекта WSMan .
Set objWsman = CreateObject("WSMan.Automation")
Создайте сеанс, указав транспорт, HTTP или HTTPS и сцепляя его с константой, представляющей целевой компьютер.
Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
В следующем примере кода VBScript показан полный скрипт. Скрипт включает подпрограмму для преобразования данных из необработанного XML-кода в удобочитаемую для человека форму. Дополнительные сведения см. в разделе "Отображение xml-выходных данных из скриптов WinRM".
Const RemoteComputer = "ComputerName.domain.com"
Set objWsman = CreateObject("WSMan.Automation")
Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
strResource = "http://schemas.microsoft.com/wbem/wsman/1/" & _
"wmi/root/cimv2/Win32_OperatingSystem"
Set objResponse = objSession.Enumerate(strResource)
While Not objResponse.AtEndOfStream
DisplayOutput(objResponse.ReadItem)
Wend
'****************************************************
' Displays WinRM XML message using built-in XSL
'****************************************************
Sub DisplayOutput(strWinRMXml)
Dim xmlFile, xslFile
Set xmlFile = CreateObject("MSXml.DOMDocument")
Set xslFile = CreateObject("MSXml.DOMDocument")
xmlFile.LoadXml(strWinRMXml)
xslFile.Load("WsmTxt.xsl")
Wscript.Echo xmlFile.TransformNode(xslFile)
End Sub
Подключение к удаленному компьютеру с помощью другой учетной записи
Укажите целевой компьютер с полным доменным именем или IP-адресом и назначьте его константе. Если указан IPv6-адрес, адрес должен быть заключен в квадратные скобки.
Const RemoteComputer = "ComputerName.domain.com"
Создание объекта WSMan .
Set objWsman = CreateObject("Wsman.Automation")
Вызовите метод WSMan.CreateConnectionOptions , чтобы создать объект ConnectionOptions . Учетная запись на удаленном компьютере должна быть членом группы администраторов локального компьютера.
Set objConnectionOptions = objWsman.CreateConnectionOptions objConnectionOptions.UserName = "Username" objConnectionOptions.Password = "Password"
В вызове WSman.CreateSession укажите соответствующие флаги подключения сеанса в параметре flags . Дополнительные сведения см. в разделе "Константы сеанса". Укажите целевой компьютер с полным именем компьютера или IP-адресом и транспортом — http или https. Этот скрипт запрашивает проверку подлинности Kerberos из удаленной службы WinRM.
В отличие от скриптов WMI, можно использовать несколько методов проверки подлинности в сценариях WinRM. Дополнительные сведения см. в разделе "Проверка подлинности для удаленных подключений".
iFlags = objWsman.SessionFlagUseKerberos Or _ objWsman.SessionFlagCredUserNamePassword Set objSession = objWsman.CreateSession("https://" & RemoteComputer, _ iFlags, objConnectionOptions)
После того как объект сеанса будет доступен, можно вызвать любой из методов объекта Session , чтобы получить данные для ресурса. Вы можете получить данные для любого ресурса, доступного на компьютере, на котором выполняется сеанс. Дополнительные сведения см. в разделе "Получение данных с локального компьютера".
В следующем примере кода VBScript показан полный скрипт. Скрипт включает подпрограмму для преобразования данных из необработанного XML-кода в удобочитаемую для человека форму. Дополнительные сведения см. в разделе "Отображение xml-выходных данных из скриптов WinRM". Сценарий задает проверку подлинности Kerberos, но если удаленный компьютер находится в рабочей группе, а не в домене, то при указании Kerberos возникает ошибка.
Const RemoteComputer = "ComputerName.domain.com"
Set objWsman = CreateObject("Wsman.Automation")
Set objConnectionOptions = objWsman.CreateConnectionOptions
objConnectionOptions.UserName = "Username"
objConnectionOptions.Password = "Password"
iFlags = objWsman.SessionFlagUseKerberos Or _
objWsman.SessionFlagCredUserNamePassword
Set objSession = objWsman.CreateSession("https://" & RemoteComputer, _
iFlags, objConnectionOptions)
strResource = "http://schemas.microsoft.com/wbem/wsman/1/" & _
"wmi/root/cimv2/Win32_OperatingSystem"
Set objResponse = objSession.Enumerate(strResource)
While Not objResponse.AtEndOfStream
DisplayOutput(objResponse.ReadItem)
Wend
'****************************************************
' Displays WinRM XML message using built-in XSL
'****************************************************
Sub DisplayOutput(strWinRMXml)
Dim xmlFile, xslFile
Set xmlFile = CreateObject("MSXml2.DOMDocument.3.0")
Set xslFile = CreateObject("MSXml2.DOMDocument.3.0")
xmlFile.LoadXml(strWinRMXml)
xslFile.Load("WsmTxt.xsl")
Wscript.Echo xmlFile.TransformNode(xslFile)
End Sub
Связанные темы