從遠端電腦取得資料
您可以取得資料或管理遠端電腦上的資源,以及本機電腦。 在 Windows 遠端系統管理腳本中連線到遠端電腦非常類似于建立本機連線。 WMI 實例資料可供使用,而且如果遠端電腦有 BMC 硬體可以使用WS-Management通訊協定進行通訊,則也可以使用 智慧型平臺管理介面 (IPMI) 資料。 如需詳細資訊,請參閱 Windows 遠端系統管理和 WMI 和 遠端硬體管理。
您可能需要建立 ConnectionOptions 物件,以指定登入要求之驗證類型的相關資訊。
如果遠端電腦上的帳戶具有相同的登入使用者名稱和密碼,您唯一所需的額外資訊就是傳輸、功能變數名稱和電腦名稱稱。 由於 使用者帳戶控制 (UAC) ,因此遠端帳戶必須是網域帳戶和遠端電腦系統管理員群組的成員。 如果帳戶是 Administrators 群組的本機電腦成員,則 UAC 不允許存取 WinRM 服務。 若要存取工作組中的遠端 WinRM 服務,必須藉由建立下列 DWORD 登錄專案並將其值設定為 1: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] LocalAccountTokenFilterPolicy來停用本機帳戶的 UAC 篩選。
若要使用登入使用者名稱和密碼連線到遠端電腦
指定具有完整功能變數名稱或 IP 位址的目的電腦,並將此值指派給常數。 如果指定 IPv6 位址,則位址必須以方括弧括住。
Const RemoteComputer = "ComputerName.domain.com"
建立 WSMan 物件。
Set objWsman = CreateObject("WSMan.Automation")
建立會話、指定傳輸、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
使用不同帳戶連線到遠端電腦
指定具有完整功能變數名稱或 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。 此腳本會向遠端 WinRM 服務要求 Kerberos 驗證。
不同于 WMI 腳本,您可以在 WinRM 腳本中使用數種驗證方法。 如需詳細資訊,請參閱 遠端連線的驗證。
iFlags = objWsman.SessionFlagUseKerberos Or _ objWsman.SessionFlagCredUserNamePassword Set objSession = objWsman.CreateSession("https://" & RemoteComputer, _ iFlags, objConnectionOptions)
會話物件可用之後,您可以呼叫任何 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
相關主題