該 WSH 網(wǎng)絡示例演示典型的網(wǎng)絡管理員如何在網(wǎng)絡的若干遠程計算機上使用腳本。該示例腳本將執(zhí)行一些有用的管理任務,其中包括:
注意 WMI 是基于 Web 的企業(yè)管理 (WBEM) 的功能強大而又高級的技術(shù)。WMI 主要用于訪問和管理企業(yè)環(huán)境中的管理信息。有關(guān) WMI 的詳細信息,請參閱 Microsoft Windows 管理規(guī)范:背景和概述,網(wǎng)址為 (http://msdn.microsoft.com/library/default.asp?URL=/library/backgrnd/html/wmixwdm.htm)。
管理員必須在遠程計算機上進行必要的安全設置。有關(guān)詳細信息,請參閱設置遠程 WSH。接著,管理員必須復制示例并將其粘貼到腳本編輯器中,還要更改常數(shù)以反映相應的網(wǎng)絡路徑和計算機名稱。最后,管理員就可以運行腳本了。
運行該示例
var oController = new ActiveXObject"WSHController" var oProcess = oController.CreateScript "c:\MyLocalDir\\AdminScript.vbs","remmachine" oProcess.Execute() while (oProcess.Status != 2) WScript.Sleep(100) WScript.Echo"Done"
' 遠程 WSH 管理員示例 AdminScript.vbs ' ' 該示例代碼執(zhí)行幾個常見的管理任務,網(wǎng)絡管理員 ' 經(jīng)常會需要在自己所在網(wǎng)絡的計算機上執(zhí)行 ' 這些管理任務:它將創(chuàng)建一個公用目錄,并在其中 ' 放入一些文件,然后將該目錄共享。它還將 ' 這些計算機設為默認打印機連接。 ' 注意,為使該示例代碼盡可能小一些, ' 而省略了錯誤處理。實際的產(chǎn)品代碼應使用相應的 ' 錯誤處理,因為有很多這類操作可能會失敗; ' 例如,磁盤空間可能不足。 Option Explicit Dim FSO Dim Services Dim SecDescClass Dim SecDesc Dim Trustee Dim ACE Dim Share Dim InParam Dim Network Const FolderName = "C:\Public" Const AdminServer = "\\AdminMachine" Const ShareName = "Pubs" Const PrinterShare = "\\CorpPrinters\PrinterShare" ' 首先,我們在該計算機上添加一臺打印機,并使其成為默認打印機。 Set Network = CreateObject("Wscript.Network") Network.AddWindowsPrinterConnection PrinterShare Network.SetDefaultPrinter PrinterShare ' 接著,我們創(chuàng)建一個文件夾,并在其中放入一些文件。 Set FSO = CreateObject("Scripting.FileSystemObject") If Not FSO.FolderExists(FolderName) Then FSO.CreateFolder(FolderName) End If Call FSO.CopyFile(AdminServer & "\Public\Images\*.*",F(xiàn)olderName) ' 通過 WMI,使該文件夾成為共享點 '有關(guān)該代碼如何運行的信息,請參閱 WMI SDK。 Set Services = GetObject("WINMGMTS:{impersonationLevel=impersonate,(Security)}!"& AdminServer & "\ROOT\CIMV2") Set SecDescClass = Services.Get("Win32_SecurityDescriptor") Set SecDesc = SecDescClass.SpawnInstance_() Set Trustee = Services.Get("Win32_Trustee").SpawnInstance_ Trustee.Domain = Null Trustee.Name = "EVERYONE" Trustee.Properties_.Item("SID") = Array(1,1,0,0,0,0,0,1,0,0,0,0) Set ACE = Services.Get("Win32_Ace").SpawnInstance_ ACE.Properties_.Item("AccessMask") = 2032127 ACE.Properties_.Item("AceFlags") = 3 ACE.Properties_.Item("AceType") = 0 ACE.Properties_.Item("Trustee") = Trustee SecDesc.Properties_.Item("DACL") = Array(ACE) Set Share = Services.Get("Win32_Share") Set InParam = Share.Methods_("Create").InParameters.SpawnInstance_() InParam.Properties_.Item("Access") = SecDesc InParam.Properties_.Item("Description") = "Public Share" InParam.Properties_.Item("Name") = ShareName InParam.Properties_.Item("Path") = FolderName InParam.Properties_.Item("Type") = 0 Share.ExecMethod_("Create",InParam) ' 現(xiàn)在我們大功告成了。
WSH 演練 | 訪問網(wǎng)絡 | 設置遠程 WSH | 遠程運行腳本