2016-10-26 16 views
0

これをStart-Processで実行しようとしていますが、そのまま実行されているようです。事前に多くの感謝。スタート・プロセスを使用しmssacliでpowershellでリダイレクタ出力を使用する方法

cmd /C ("$([char]34)" + "C:\Program Files\MBSA\bin\mbsacli.exe" + "$([char]34)" + " /xmlout /wi /nvc /nd /catalog " + "$([char]34)" + "C:\Program Files\MBSA\db\wsusscn2.cab" + "$([char]34)" + " /unicode > " + "$([char]34)" + "C:\Program Files\MBSA\result.xml" + "$([char]34)") 

作品ない: - - は:

Start-Process -FilePath "C:\Program Files\MBSA\bin\mbsacli.exe" -ArgumentList (" /xmlout /wi /nvc /nd /catalog " + $([char]34) + "C:\Program Files\MBSA\db\wsusscn2.cab" + $([char]34) + " /unicode > " + $([char]34) + "C:\Program Files\MBSA\result.xml" + "$([char]34)") -Wait -PassThru 
+0

'>'はコマンドプロンプトのシェル命令ですが、mbsacli.exeの引数ではありません。コマンドプロンプトを使用していない場合は、結果をPowerShellで取得し、出力ファイルに保存するためにそれらを 'Set-Content'などにパイプする必要があります。文字列に二重引用符を付けるには、1)エスケープして別の二重引用符 "" "" xyz "" "'でエスケープします。2)エスケープ文字をPowerShellエスケープ文字でエスケープします。エスケープ文字はバッククイック '' \ '" xyz \ "'、3)文字列 "'" xyz "''を一重引用符で囲みます。なぜStart-Processを使用しているのですか?mbsacliはわかりませんが、Robocopyと/ parametersをPowerShellから直接実行します。 – TessellatingHeckler

+0

次のコマンドに進む前に、完了するためのコマンドが必要です。したがって、開始プロセスを使用して-waitパラメータが必要です。 PowerShellを初めて使うときに他のコマンドを使用できるかどうかはわかりません。 –

答えて

1

の使用はファイルパス

Start-Process -FilePath "C:\Program Files\MBSA\bin\mbsacli.exe" -ArgumentList (" /xmlout /wi /nvc /nd /catalog " + $([char]34) + "C:\Program Files\MBSA\db\wsusscn2.cab" + $([char]34) + " /unicode") -Wait -PassThru -RedirectStandardOutput "C:\Program Files\MBSA\result.xml" 

、代わりに続い-RedirectStandardOutput CMD/Cの動作を使用し

$([char] 34)の場合、一重引用符で囲むと二重引用符を直接使用できます。

Start-Process -FilePath "C:\Program Files\MBSA\bin\mbsacli.exe" -ArgumentList ' /xmlout /wi /nvc /nd /catalog "C:\Program Files\MBSA\db\wsusscn2.cab" /unicode' -Wait -PassThru -RedirectStandardOutput "C:\Program Files\MBSA\result.xml" 
関連する問題