Windows 脚本宿主  

WSH 网络管理员示例脚本

该 WSH 网络示例演示典型的网络管理员如何在网络的若干远程计算机上使用脚本。该示例脚本将执行一些有用的管理任务,其中包括:

管理员必须在远程计算机上进行必要的安全设置。有关详细信息,请参阅设置远程 WSH。接着,管理员必须复制示例并将其粘贴到脚本编辑器中,还要更改常数以反映相应的网络路径和计算机名称。最后,管理员就可以运行脚本了。

运行该示例

  1. 在远程计算机上进行必要的安全设置。
  2. 将下面的 AdminScript.vbs 脚本复制到您的脚本文本编辑器中。
  3. 更改常数以反映您的网络路径和计算机名称。
  4. 用适当的远程计算机名称替换 remmachine,然后运行脚本:
    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" 

AdminScript.vbs 示例

' 远程 WSH 管理员示例 AdminScript.vbs
'
' 该示例代码执行几个常见的管理任务,网络管理员
' 经常会需要在自己所在网络的计算机上执行
' 这些管理任务:它将创建一个公用目录,并在其中
' 放入一些文件,然后将该目录共享。它还将
' 这些计算机设为默认打印机连接。

' 注意,为使该示例代码尽可能小一些,
' 而省略了错误处理。实际的产品代码应使用相应的
' 错误处理,因为有很多这类操作可能会失败;
' 例如,磁盘空间可能不足。

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

' 接着,我们创建一个文件夹,并在其中放入一些文件。

Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FolderExists(FolderName) Then 
   FSO.CreateFolder(FolderName)
End If

Call FSO.CopyFile(AdminServer & "\Public\Images\*.*",FolderName)

' 通过 WMI,使该文件夹成为共享点
'有关该代码如何运行的信息,请参阅 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)

' 现在我们大功告成了。

请参阅

WSH 演练 | 访问网络 | 设置远程 WSH | 远程运行脚本