您好,RS。WMI 带来的好处之一是:除了少数一些很不明显的例外情况外,在本地计算机上能够做到的任何事情也同样能够在远程计算机上做到。这是脚本与命令行工具相比体现出来的一大优点;许多命令行工具(包括网络共享之类的工具)只能在本地计算机上运行。您要是想进行远程操作,通常,使用 WMI 脚本是唯一的方法。
那么,如何共享远程计算机上的文件夹呢?下面提供了一种方法:
Const FILE_SHARE = 0 Const MAXIMUM_CONNECTIONS = 25
strComputer = "atl-ws-01" Set objWMIService = GetObject _ ("winmgmts://" & strComputer & "/root/cimv2")
Set objNewShare = objWMIService.Get("Win32_Share")
errReturn = objNewShare.Create _ ("C:/Public", "PublicShare", FILE_SHARE, _ MAXIMUM_CONNECTIONS, "Public share for Fabrikam employees.")
上述脚本将名为 atl-ws-01 的计算机上的文件夹 C:/Public 设置成了共享文件夹。该脚本首先设置一对常量。第一步,我们将值 0 分配给常量 FILE_SHARE(它用于说明我们正在创建的共享资源的类型);如果我们将此常量的值设置为 2147483648,则可创建一个管理共享而非标准文件共享。我们也可以给常量 MAXIMUM_CONNECTIONS 分配值 25,该常量用于设置最大同时连接数。如果不限制同时连接的数量,我们根本不必使用此常量。我们在创建共享时保留此参数为空就行了。
连接到远程计算机上的 WMI 服务之后,再连接到 Win32_Share 类。此时,我们只需调用 Create 方法,传递以下五个参数:
|
参数 |
说明 |
|
“C:/Public” |
要共享的文件夹的本地路径。 |
|
“PublicShare” |
共享文件夹的共享名。 |
|
FILE_SHARE |
要创建的共享的类型。 |
|
MAXIMUM_CONNECTIONS |
能够同时连接到共享上的用户的最大数量。 |
|
“Fabrikam share for Fabrikam employees.” |
可以为共享文件夹添加的说明。 |
这是关于该脚本的所有信息;运行该脚本,文件夹 C:/Public 将作为 PublicShare 共享。请注意,文件夹 C:/Public 必须已存在于计算机 atl-ws-01 上;Win32_Share Create 方法不能为您创建该文件夹。如果您不知道文件夹 C:/Public 是否存在,这里有一个快速检查方法:
strComputer = "atl-ws-01" Set objWMIService = GetObject _ ("winmgmts://" & strComputer & "/root/cimv2")
Set colFolders = objWMIService.ExecQuery _ ("Select * From Win32_Directory Where Name = 'C://Public'") Wscript.Echo colFolders.Count
此脚本回显位于计算机 atl-ws-01 上的名为 C:/Public(请注意,在查询自身中,必须将此文件夹指定为“C://Public”)的文件夹的数量。如果文件夹数等于 0,则 C:/Public 不存在。如果文件夹数等于 1,则该文件夹已存在。
顺便说一句,我们知道有很多人都想询问有关在共享文件夹上设置权限的问题。这些都可以使用脚本来实现,但过程稍复杂些,需要进行更详细的讨论,而本专栏文章已经不能再提供这些信息了。不过我们计划不久将发布大量介绍如何使用安全描述符的资料。