2016-10-26 29 views
0

我試圖用Start-Process來運行它,但它似乎並沒有按照原樣運行。提前謝謝了。如何在mbsacli中使用powershell中的重定向器輸出

使用CMD/C工作: -

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

'>'是命令提示符shell指令,它不是mbsacli.exe的參數。如果不使用命令提示符,則必須在PowerShell中獲取結果,並將它們傳送到「Set-Content」或類似文件,以將它們保存到輸出文件中。你可以在一個字符串中加一個雙引號1)用另一個雙引號''「」xyz「」「'轉義它,2)用PowerShell轉義字符轉義它,這是一個反引號'」\'「xyz \'」 「',3)圍繞字符串''」xyz「'''使用單引號。你爲什麼使用啓動過程 - 我不知道mbsacli,但帶有/參數的Robocopy直接從PowerShell運行 – TessellatingHeckler

+0

在繼續下一個命令之前,我需要命令完成。因此需要-wait參數,從而使用啓動進程。不知道我是否可以使用任何其他命令,因爲我是PowerShell的新手。 –

回答

1

使用-RedirectStandardOutput其次是文件路徑

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" 

,而是$([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"