2017-10-19 105 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