Поделиться через


Получение данных с удаленного компьютера

Вы можете получить данные или управлять ресурсами на удаленных компьютерах, а также на локальном компьютере. Подключение к удаленному компьютеру в скрипте удаленного управления 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.

Подключение к удаленному компьютеру с помощью имени пользователя входа и пароля

  1. Укажите целевой компьютер с полным доменным именем или IP-адресом и назначьте его константе. Если указан IPv6-адрес, адрес должен быть заключен в квадратные скобки.

    Const RemoteComputer = "ComputerName.domain.com"
    
  2. Создайте объект WSMan.

    Set objWsman = CreateObject("WSMan.Automation")
    
  3. Создайте сеанс, указав транспорт, 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

Подключение к удаленному компьютеру с помощью другой учетной записи

  1. Укажите целевой компьютер с полным доменным именем или IP-адресом и назначьте его константе. Если указан IPv6-адрес, адрес должен быть заключен в квадратные скобки.

    Const RemoteComputer = "ComputerName.domain.com"
    
  2. Создайте объект WSMan.

    Set objWsman = CreateObject("Wsman.Automation")
    
    
  3. Вызовите метод WSMan.CreateConnectionOptions, чтобы создать объект ConnectionOptions. Учетная запись на удаленном компьютере должна быть членом группы локальных администраторов компьютеров. Примечание. Не сохраняйте пароли в виде обычного текста в скриптах.

    Set objConnectionOptions = objWsman.CreateConnectionOptions
    objConnectionOptions.UserName = "<username>"
    objConnectionOptions.Password = "<password>"
    
  4. В вызове WSman.CreateSession укажите соответствующие флаги подключения сеанса в параметре флагов . Дополнительные сведения см. в разделе Константы сеансов. Укажите целевой компьютер с полным именем компьютера или IP-адресом и транспортом — http или https. Этот скрипт запрашивает аутентификацию Kerberos от удалённой службы WinRM.

    В отличие от скриптов WMI, можно использовать несколько методов проверки подлинности в сценариях WinRM. Дополнительные сведения см. в разделе Аутентификация для удаленных подключений.

    iFlags = objWsman.SessionFlagUseKerberos Or _
      objWsman.SessionFlagCredUserNamePassword
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer, _
      iFlags, objConnectionOptions)
    
  5. После того как объект сеанса будет доступен, можно вызвать любой из методов , чтобы получить данные для ресурса. Вы можете получить данные для любого ресурса, доступного на компьютере, на котором выполняется сеанс. Для получения дополнительной информации см. получение данных с локального компьютера.

В следующем примере кода 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

о удаленном управлении Windows

Использование удаленного управления Windows

справочник по удаленному управлению Windows