從本機電腦取得資料
雖然 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 管理通訊協定。
呼叫 WSMan.CreateSession 方法來建立 Session 物件將會啟動連線到本機 WinRM 的 會話 。
建立 WSMan 會話並取得資料
建立 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 程式碼範例顯示取得 WMI Win32_Service 名為 「Winmgmt」 之特定實例的完整腳本。
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)
相關主題