从远程计算机获取数据

可以在远程计算机和本地计算机上获取数据或管理资源。 在 Windows 远程管理脚本中连接到远程计算机与建立本地连接非常相似。 WMI 实例数据可用,如果远程计算机具有可以使用WS-Management协议进行通信的 BMC 硬件,则 智能平台管理接口 (IPMI) 数据也可用。 有关详细信息,请参阅 Windows 远程管理和 WMI远程硬件管理

可能需要创建 ConnectionOptions 对象来指定有关登录请求的身份验证类型的信息。

如果远程计算机上的帐户具有相同的登录用户名和密码,则唯一需要的额外信息是传输、域名和计算机名称。 由于 用户帐户控制 (UAC) ,远程帐户必须是域帐户和远程计算机管理员组的成员。 如果该帐户是 Administrators 组的本地计算机成员,则 UAC 不允许访问 WinRM 服务。 若要访问工作组中的远程 WinRM 服务,必须通过创建以下 DWORD 注册表项并将其值设置为 1 来禁用本地帐户的 UAC 筛选:[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 转换为人类可读的形式。 有关详细信息,请参阅 显示 WinRM 脚本中的 XML 输出

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 调用中,在 flags 参数中指定相应的会话连接标志。 有关详细信息,请参阅 会话常量。 使用完全限定的计算机名称或 IP 地址和传输(http 或 https)指定目标计算机。 此脚本从远程 WinRM 服务请求 Kerberos 身份验证。

    与 WMI 脚本不同,可以在 WinRM 脚本中使用多种身份验证方法。 有关详细信息,请参阅 远程连接的身份验证

    iFlags = objWsman.SessionFlagUseKerberos Or _
      objWsman.SessionFlagCredUserNamePassword
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer, _
      iFlags, objConnectionOptions)
    
  5. 会话对象可用后,可以调用任何 Session 对象方法以获取资源的数据。 可以获取运行会话的计算机上可用的任何资源的数据。 有关详细信息,请参阅 从本地计算机获取数据

以下 VBScript 代码示例演示了完整的脚本。 该脚本包含一个子例程,用于将数据从原始 XML 转换为人类可读的形式。 有关详细信息,请参阅 显示 WinRM 脚本中的 XML 输出。 该脚本指定 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 远程管理参考