我们的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中的命令?
答案 0 :(得分:8)
如果您使用的是Powershell v3.0,那么有一种新的语法可以让Powershell避免对参数进行任何额外的解析。类似的东西:
inventory.exe --% 'inventory', 'date', 'owner'