情景:
想要在vbscript中包装一些PowerShell,因为我们需要同时从一堆服务器中提取CPU信息并将结果放入单个文件中。在使用vbscript到' fork'之前我做过类似的事情。一个Powershell命令并立即返回,有效地可以同时探索多个服务器,而不必等待每个服务器按顺序返回。
平台碰巧是XP(别无选择)。
在PowerShell提示符中:
Get-counter
-computername thehost1 -SampleInterval 2 -MaxSamples 5
-Counter "\Processor(_Total)\% Processor Time" > out1.text
找到....把文件写出来。
来自VBS:
CreateObject("WScript.Shell").Run "powershell -nologo -command Get-counter
-computername thehost1 -SampleInterval 2 -MaxSamples 5
-Counter ""\Processor(_Total)\% Processor Time"" | Out-File ""out1.txt"" ",0
它运行但是从VBS执行powershell时没有创建输出文件或打印错误(也尝试使用'>'而不是Out-file servlet)。
尝试调试(显示可以与cscript一起使用的可能args的截断列表):
C:\Documents and Settings\XX>cscript
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.
Usage: CScript scriptname.extension [option...] [arguments...]
Options:
//D Enable Active Debugging
//I Interactive mode (default, opposite of //B)
//X Execute script in debugger
不产生调试器或任何其他输出。
关于这里可能出现什么问题的任何线索?
非常感谢
凯文
答案 0 :(得分:1)
我认为"\Processor(_Total)\% Processor Time"
周围的引号导致问题。
您没有看到任何错误,因为VBScript成功运行PowerShell并且不知道PowerShell脚本行失败。
我通过将"
更改为'
来实现这一目标,如下所示:
CreateObject("WScript.Shell").Run "powershell -nologo -command Get-counter -computername thehost1 -SampleInterval 2 -MaxSamples 5 -Counter '\Processor(_Total)\% Processor Time' >C:\YourPath\out1.txt", 0