使用powershell逗号时出现问题

时间:2012-06-22 17:07:41

标签: powershell wmic

我试着编写一个非常简短的PowerShell脚本来运行一些命令,将它们的输出传递给一个文本文件,然后对一个关键字进行搜索。

我无法弄清楚要改变的是这条线:

wmic service get name, startname | out-File "$pwd\admin\wmic.txt"

WMIC.exe : Invalid GET Expression.
At \\test.ps1:7 char:5
+ wmic <<<<  service get name startname | out-File "$pwd\admin\wmic.txt"
+ CategoryInfo          : NotSpecified: (Invalid GET Expression.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError

我相信错误是从','生成的,因为powershell使用逗号来创建数组。 有什么想法或建议吗?

由于

3 个答案:

答案 0 :(得分:6)

wmic service get name"," startname| out-File "$pwd\admin\wmic.txt"

这很容易解决逗号,完全没有变化。

答案 1 :(得分:2)

从Powershell 3.0开始,有一个新的转义运算符--%可用(参见release notes中的魔术参数):

wmic --% service get name, startname | out-File "$pwd\admin\wmic.txt"

答案 2 :(得分:1)

这个问题的答案在于使用Start-Process cmdlet。这将使命令行参数的解释变得更加容易,因为您还可以提前构造命令行参数,将它们存储在变量中,然后使用变量名称引用它们。

$WmicArgs = 'service get name, startname';
Start-Process -FilePath wmic.exe -ArgumentList $WmicArgs;

但是,为什么你甚至使用WMIC.exe?

使用WMI有更简单的方法,例如使用PowerShell类型加速器[wmi],[wmiclass],[wmisearcher]和Get-WmiObject cmdlet。