從本機計算機取得數據
雖然 Windows 遠端管理和 WS-Management 通訊協定已明確設計為遠端通訊,但在本機電腦上建立會話是最簡單的案例。 某些腳本可能需要存取本機計算機和遠端電腦上的數據。
WinRM 2.0 版:
所有作業都會視為遠端作業,且必須在執行任何作業之前啟動 WinRM 服務。 如果未指定遠端目的地,則預設會使用localhost,並將所有作業傳送至本機 WinRM 服務。 如需啟動 WinRM 服務的詳細資訊,請參閱 安裝及設定 Windows 遠端管理。
針對本機作業使用 WinRM 服務時,應考慮下列因素:
- 本機 WinRM 組態只能由系統管理員讀取。
- WMI 命名空間必須設定遠端啟用許可權。 如需詳細資訊,請參閱 保護遠端 WMI 連線。
- 如果未建立 WinRM 偵聽器,則 WinRM 服務會在埠 47001 上接聽本機要求。
每個 WinRM 腳本必須先藉由建立工作階段或連線到電腦來建立 Session 物件。 建立會話之後,您可以使用 Session 物件方法,例如 Session.Enumerate 或 Session.Invoke 來取得數據或執行方法。
會話的建立有點類似 將 連接到 Windows Management Instrumentation (WMI) 命名空間。 會話基本上是一層,可讓您透過 SOAP 訊息和 WS-Management 通訊協定來傳送和接收資料。 如需詳細資訊,請參閱 WS-Management 通訊協定。
呼叫 WSMan.CreateSession 方法來建立 Session 物件,將會啟動連線到本機 WinRM 的 會話。
建立 WSMan(Windows 遠端管理)會話並取得資料
建立 WSMan 物件。
Set objWsman = CreateObject("Wsman.Automation")
呼叫 WSMan.CreateSession 方法來建立會話。 此工作階段會在您的登入使用者名稱和密碼下執行,並可透過本機 WinRM 取得數據。
Set objSession = objWsman.CreateSession()
建立資源 URI,以識別您想要管理或要取得數據的 資源。 如需格式化 URI 的詳細資訊,請參閱 資源 URI。 此資源 URI 適用於 WMI Win32_Service 類別、Winmgmt 服務的特定實例。 如需詳細資訊,請參閱 Windows 遠端管理和 WMI。
strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Winmgmt"
呼叫 會話 方法,以使用資源 URI 取得或列舉數據。 如需詳細資訊,請參閱 WinRM 腳稿 API。
strResponse = objSession.Get(strResource) Wscript.Echo strResponse
若要從另一部計算機取得或管理數據或使用不同的驗證方法,請參閱 從遠端電腦取得數據。
下列 VBScript 程式代碼範例顯示完整的腳本,可取得名為 “Winmgmt” 之 WMI Win32_Service 的特定實例。
Set objWsman = CreateObject("Wsman.Automation")
Set objSession = objWsman.CreateSession()
strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Winmgmt"
strResponse = objSession.Get(strResource)
Wscript.Echo strResponse
下列 VBScript 程式代碼範例顯示具有數據轉換的完整腳本。 如需詳細資訊,請參閱 從 WinRM 腳本顯示 XML 輸出。
Set objWsman = CreateObject("Wsman.Automation")
Set objSession = objWsman.CreateSession()
strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Winmgmt"
strResponse = objSession.Get(strResource)
Set xmlFile = CreateObject("MSXml.DOMDocument")
Set xslFile = CreateObject("MSXml.DOMDocument")
xmlFile.LoadXml(strResponse)
xslFile.Load("WsmTxt.xsl")
Wscript.Echo xmlFile.TransformNode(xslFile)
相關主題