2013-08-12 9 views
6

私たちのIT部門はWindows 8に移行しており、誰もがcmd.exeではなくデフォルトのWindowsコマンドライン環境としてPowerShellを使用し始めています。PowerShellのコマンドラインで生の文字列をコマンドに渡すにはどうすればよいですか?

残念ながら、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で[OK]を動作します:

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

私は、このような%、PowerShellの$などの文字を入力する場合はそれも悪くなります。

生の文字列をPowerShellのコマンドに渡す方法を知っている人はいますか?

答えて

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

+0

+1それは素晴らしいリンクです! –

+0

その構文について知りませんでした。ありがとう:) –

関連する問題