cscript调用powershell - 不使用'>'编写文件或者out-file cmdlet

时间:2014-10-09 14:11:36

标签: powershell vbscript wsh

情景:

想要在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

不产生调试器或任何其他输出。

关于这里可能出现什么问题的任何线索?

非常感谢

凯文

1 个答案:

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