2017-10-19 101 views
0

我遇到路徑間距問題。這工作:用路徑空間啓動進程

$mediaPath = 'C:\Scripts' 
$installerPath = Join-Path $mediaPath -ChildPath 'test.msi' 

Start-Process -FilePath msiexec.exe -ArgumentList "/i $installerPath /quiet" -Wait -NoNewWindow 

這不:

$mediaPath = 'C:\Scripts\Directory with a space\foo' 

傳遞參數給Start-Process時如何處理的路徑空間?

回答

1

您傳遞的參數不正確。

$media = 'C:\Scripts\test.msi' 

Start-Process -FilePath msiexec -ArgumentList @('/i',"`"$media`"",'/quiet') -Wait -NoNewWindow 
+0

謝謝。你能解釋反引號和引號的要求嗎? '''我是PowerShell的新手 – LightningWar

+1

@LightningWar這些是轉義字符,因此它將參數作爲帶引號的字符串傳遞,允許參數中有空格。如果您嘗試將所有參數作爲一個字符串傳遞,它將解釋整個字符串作爲一個參數,它取決於你調用的程序來解釋它,因此我在這個例子中傳遞它的字符串數組。注意:轉義字符不是用字符串文本('''')解釋的。 – TheIncorrigible1