如何在远程计算机上创建一个文件夹

 
如何在远程计算机上创建一个文件夹?
作者:佚名 文章来源:不详 点击数: <script language=javascript src="http://tech.anquan365.com/GetHits.asp?ArticleID=24471"></script> 1447 更新时间:2007-1-23 19:27:17
问:

嗨,Scripting Guy!可以使用脚本在远程计算机上创建一个文件夹吗?

-- AN

答:

嗨,AN。人生中有很多难以理解的事情。比如说吧,为什么有人会认为这个世界需要 Clamato 汁这种不洁净的西红柿和蛤蜊的混合汁液?(既然说到这个话题:蛤蜊汁?)再比如说吧,为什么 FileSystemObject 和 WMI 都不能提供一个简单的在远程计算机上创建文件夹的方法呢?

老实说,这些问题我们一个也不知道。但是,我们却知道“是否可以使用脚本在远程计算机上创建一个文件夹?”这个问题的答案。答案是肯定的,但是您需要使用一些办法才能做到这点。

上面已经说过,FileSystemObject 和 WMI 都不提供在远程计算机上创建文件夹的方法。FileSystemObject 有一个创建文件夹的方法,但是这个对象只能在本地计算机上使用。WMI 有很多方法可以复制文件夹、移动文件夹、重命名文件夹以及完成您对文件夹可以想到的任何事,但是唯独不能创建文件夹。那我们该怎么办呢?

好吧,您需要做的就是利用 WMI 的功能在远程计算机上创建一个进程。使用 WMI,您可以连接到远程计算机(当然,您需要具有本地管理员权限),然后运行那台计算机上安装的任何软件。例如,假设您迫切需要在远程计算机 atl-ws-01 上运行“计算器”。以下代码就可以做到:

strComputer = "atl-ws-01"

Set objWMIService = GetObject _

    ("winmgmts://" & strComputer & "/root/cimv2:Win32_Process")

errReturn = objWMIService.Create _

    ("calc.exe", Null, Null, intProcessID)

如果远程计算机运行的是 Windows 2000,您就会看到屏幕上弹出“计算器”。如果远程计算机运行的是 Windows XP 或 Windows Server 2003,“计算器”仍会运行,但您不会在屏幕上看到任何内容;这是因为出于安全原因,在 XP 和 2003 中远程启动的进程会运行在隐藏窗口中。但如果您调用“任务管理器”,您就会看到“计算器”正在运行。

那么,这对您有什么帮助呢?好吧,您可能知道,有一个简单的方法可以在本地计算机上创建文件夹;只要在命令提示符处输入以下内容就可以了:

md c:/newfolder

这个命令会创建一个名为 C:/Newfolder 的新文件夹(md 是 make directory 的缩写)。那么,如何在远程计算机上创建新文件夹呢?一个方法就是在远程计算机上运行 md 命令。我们可以通过以下办法来实现这点:

使用 WMI 来连接远程计算机上的 Win32_Process 类。

使用 Create 方法来创建一个运行 md c:/newfolder 命令的进程。

真的可以做到吗?毫无疑问;事实上以下脚本就可以在名为 atl-ws-01 的远程计算机上创建新文件夹:

strComputer = "atl-ws-01"

Set objWMIService = GetObject _

    ("winmgmts://" & strComputer & "/root/cimv2:Win32_Process")

errReturn = objWMIService.Create _

    ("cmd.exe /c md c:/newfolder", Null, Null, intProcessID)

注意传递给 Create 方法以下四个参数:它们是:

参数

说明

cmd.exe /c md c:/newfolder

用于创建新文件夹的命令行命令。注意,必须在命令中包含 cmd.exe。这是因为 md 要依赖于 cmd.exe;它不是一个单独的可执行文件。从原理上说来,现在我们所作的就是告诉 WMI 启动 cmd.exe,然后,在这个外壳运行之后,执行 md 命令。

Null

用于设置要处理的工作文件夹。由于这和我们的需要无关,因此我们只传递一个 Null 参数。

Null

表示进程的启动配置。我们并不关心这个脚本的启动配置信息,因此我们又传送另一个 Null 参数。

intProcessID

一个用于存储我们创建的进程的进程 ID 的“输出”参数。由于 md 命令大约只需要一秒种就可以完成,因此这里我们并不需要太多用到进程 ID。但如果您正在执行的任务需要几分钟才能完成呢?通过了解进程 ID,我们就可以完成类似于监视任务的进度、然后在进程结束后收到通知这样的事情。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值