我试着编写一个非常简短的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使用逗号来创建数组。 有什么想法或建议吗?
由于
答案 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。