您好,脚本专家!

您好,脚本专家!

欢迎来到本 TechNet 专栏,在这里,Microsoft 脚本专家将为您解答与系统管理脚本编写有关的各种常见问题。遇到了系统管理脚本编写方面的问题?请将电子邮件发送到 scripter@microsoft.com。我们不能保证回答收到的所有问题,但是我们将尽最大的努力。

同时,不要忘了查看您好,脚本专家!存档

今日问题:如何才能从计算机删除 C$ 共享?


如何才能从计算机删除 C$ 共享?

问:

您好,脚本专家!如何才能从计算机删除 C$ 共享?

-- RB

答:

您好,RB。在此需要马上澄清一个事实:我们可以告诉您如何临时从计算机删除 C$ 共享。但是,每当 Server 服务停止后再重新启动,或者重新启动计算机时,都将自动重新创建共享。为什么会是这样?这就是这些所谓的“管理共享”的工作方式。它们有点像蒲公英或流浪猫:您一旦收留了它们,就无法真正摆脱它们。

这就是说,下面的脚本至少会暂时删除 C$ 共享:

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colShares = objWMIService.ExecQuery _
    ("Select * from Win32_Share Where Name = 'C$'")

For Each objShare in colShares
    objShare.Delete
Next

此脚本首先连接到本地计算机上的 WMI 服务。然后,我们使用此代码行检索拥有 Name C$ 的所有共享的集合:

Set colShares = objWMIService.ExecQuery _
    ("Select * from Win32_Share Where Name = 'C$'")

因为计算机上的共享名称必须是唯一的,所以我们的集合将至多只含有一项。但是,由于它是一个集合,我们仍需设置 For Each 循环,以遍历集合中的所有成员。在该循环内部,我们调用 Delete 方法来停止共享此文件夹。

注意:不管名称如何,Delete 方法实际上不会删除任何内容;它只是停止共享文件夹。Delete 方法将不会删除共享或其任何内容;它只是阻止数据通过网络共享。

正如我们前面所说的那样,这种效果是暂时的:如果 Server 服务停止后又重新启动或者计算机重新启动,那么 C$ 共享将魔术般地再次出现。因此,您可能希望在登录脚本或计算机启动脚本中加入此代码;通过这种方法,即使重新启动了计算机,共享也将被删除。

是的,您可以删除远程计算机上的 C$ 共享(或任何其他共享);您所需要做的就是将该计算机的名称赋给变量 strComputer。例如,下面这个修订后的脚本可以删除远程计算机 atl-ws-01 上的 C$ 共享:

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colShares = objWMIService.ExecQuery _
    ("Select * from Win32_Share Where Name = 'C$'")

For Each objShare in colShares
    objShare.Delete
Next

再见,C$。


更多信息

欢迎访问您好,脚本专家!- 存档

返回页首返回页首