我有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
答案 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