如何通过PowerShell中的命令行将原始字符串传递给命令?

时间:2013-08-12 12:29:29

标签: powershell command-prompt

我们的IT部门正在转向Windows 8,每个人都开始使用PowerShell作为默认的Windows命令行环境,而不是cmd.exe

不幸的是,PowerShell会评估您在其中键入的内容,并且很难将原始命令行参数传递给程序。

例如,我有一个程序inventory.exe,它接受​​一个格式化其输出的特殊字符串。我无法在PowerShell中传递这个特殊的字符串,因为我收到了一个神秘的错误:

PS C:\Users\Administrator> inventory.exe 'inventory "," date "," owner'
inventory.exe error: No comma allowed

我假设PowerShell以某种方式评估了'inventory "," date "," owner'字符串,并将其他内容传递给inventory.exe程序,因此它打印出错误。

此程序在cmd.exe中正常工作:

C:\Documents and Settings\boda> inventory.exe 'inventory "," date "," owner'
... (the output that I expect) ...

如果我在PowerShell中输入%$等字符,情况会更糟。

有没有人知道如何将原始字符串传递给PowerShell中的命令?

1 个答案:

答案 0 :(得分:8)

如果您使用的是Powershell v3.0,那么有一种新的语法可以让Powershell避免对参数进行任何额外的解析。类似的东西:

inventory.exe --% 'inventory', 'date', 'owner'

此处提到的其他方法:http://blogs.technet.com/b/josebda/archive/2012/03/03/using-windows-powershell-to-run-old-command-line-tools-and-their-weirdest-parameters.aspx