7

当社の IT 部門は Windows 8 に移行しており、誰もが 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-彼らの奇妙なparameters.aspx

于 2013-08-12T12:43:03.700 に答える