7

我们的 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 中的命令?

4

1 回答 1

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-他们最奇怪的参数.aspx

于 2013-08-12T12:43:03.700 回答