无法使用VB脚本在多个系统上运行进程

时间:2015-02-23 07:36:38

标签: vbscript

我有VB脚本在远程计算机上运行进程。 但它在第一台机器上工作正常(导入文本文件中的第一个主机名)。

这是脚本,

[我解释一下:我在文本文件(C:\ computers.txt)中有大量系统,并尝试运行cmd来配置HP远程板上的用户。

我可以看到结果(成功),它在第一台主机上正常工作然后我可以看到错误""该进程无法访问该文件,因为它正被另一个进程使用"。

我的问题是它应该在所有机器上运行而没有任何错误,有人可以告诉我在下面的脚本中插入绕过行的位置。

另外请建议我编写脚本的可行方法。

你能帮我吗?

Set WSHShell = WScript.CreateObject("WScript.Shell")
Set oFS = CreateObject("Scripting.FileSystemObject")

Set oTS = oFS.OpenTextFile("C:\computers.txt")

Do Until oTS.AtEndOfStream

strCompname = oTS.ReadLine

WshShell.Run "cmd.exe /v:on /k (set MYDIR=C:\Program Files\HP\hponcfg\) & cd /d ""!MYDIR!"" & HPONCFG.exe  /f \\transfer\transfer\c5180150\Add_User.xml /l log.txt > output.txt" 

Loop

Set wshShell = Nothing

wscript.quit


'close the text file

oTS.Close

1 个答案:

答案 0 :(得分:0)

为什么不使用wmic来做它。

wmic /node:@computerlist.txt process call create '"c:\\windows\\system32\\cmd.exe" /c "C:\\Program Files\\HP\\hponcfg\\HPONCFG.exe" /f \\\\transfer\\transfer\\c5180150\\Add_User.xml /l log.txt'

可能会这样做(我无法测试)

Computerlist.txt可以是name或ip。

127.0.0.1
computername

命令字符串,因为它们由C程序解析需要使用反斜杠转义的反斜杠。

如果您希望计算机上的输出使用WMIC上的重定向或使用WMIC的附加开关(/append:"filename.txt"

以下是4个显示wmic不同能力的例子。

wmic /node:"@%userprofile%\desktop\ComputerName.txt" /output:"%userprofile%\desktop\NicSpeed.html" /failfast:on nic where (PhysicalAdapter=TRUE and Speed!=100000000) get systemname,speed,caption /format:htable
wmic /node:"@%userprofile%\desktop\ComputerName.txt" /output:"%userprofile%\desktop\NicSpeed.html" /failfast:on FSDIR get /format:hform
wmic /output:clipboard process where "Name='wscript.exe'" get commandline,ParentProcessId /format:List
wmic /node:"@%userprofile%\desktop\ComputerName.txt" /output:"%userprofile%\desktop\Alias.html" /failfast:on alias get /format:hform