PowerShell 引用 Start-Process ArgumentList

PowerShell quotes for Start-Process ArgumentList

我正在尝试让应用 tablacus explorer 打开一个文件夹路径。这适用于以下格式:

$ex = 'S:\Tools\explorer\TE64.exe'
Start-Process $ex -ArgumentList '"Tabs,Close other tabs" "Open,C:\Program Files"'

但我真的很想在变量中包含路径 ($dir = 'C:\Program Files'),但我似乎无法正确引用引号,因此无法正确解释它。

感谢您的帮助。

我在 MS Blog 上找到了两个解决方案:

$Args = @"
"Tabs,Close other tabs" "Open,$dir"
"@

start $ex -ArgumentList $Args

start $ex -ArgumentList """Tabs,Close other tabs"" ""Open,$dir"""

我发现有时您需要另一层引号。

在我的例子中,我必须在 -Arguments /v 中设置变量,所以我不得不使用 \"" 来做到这一点。

Start-Process `
  -FilePath "Installer.exe" `
  -Arguments "/s /qn /v""SOME_PARAM1=\""STRING_IN_PARAM\"" SOME_PARAM2=\""STRING_IN_PARAM\"""
  -Wait ;

如果您的参数是常量字符串,则创建一个快捷方式并改为调用它。

设置快捷方式的'target'为:

"S:\Tools\explorer\TE64.exe" "Tabs,Close other tabs" "Open,C:\Program Files"

将您的快捷方式命名为 'TE64' 并在 powershell 中调用它,如下所示:

start-process S:\Tools\explorer\TE64.lnk

以下语法适合我,试试这个:

-ArgumentList "\`"$($variable)\`""