【发布时间】:2014-02-25 15:32:23
【问题描述】:
我的 PowerShell 脚本应该使用指定的参数启动一个外部可执行文件。我有两个字符串:文件名和参数。这就是我通常想要的启动 API 的过程。然而,PowerShell 失败了。
我需要将可执行文件和参数保存在单独的字符串中,因为它们是在我的脚本中的其他位置配置的。这个问题只是关于使用这些字符串来启动这个过程。另外,我的脚本需要在可执行文件前面放置一个通用的基本路径。
这是代码:
$execFile = "SomeSetup.exe"
$params = "/norestart /verysilent"
& "$basePath\$execFile" $params | Out-Host
# Pipe to the console to wait for it to finish
这是实际结果(不适用于本程序):
- 进程文件名:“C:\My\Base path\SomeSetup.exe”
- 处理命令行:"/norestart /verysilent"
这是我所期望的(这可行):
- 进程文件名:“C:\My\Base path\SomeSetup.exe”
- 处理命令行:/norestart /verysilent
问题在于安装程序识别出额外的引号并将两个参数解释为一个 - 并且不理解它。
我见过Start-Process,但它似乎需要 string[] 中的每个参数,而我没有。拆分这些参数似乎是一项复杂的 shell 任务,而不是我会做的事情(可靠)。
我现在能做什么?我应该使用类似的东西
& cmd /c "$execFile $params"
但是如果 $execFile 包含很可能会发生的空格,并且通常会在您找到它之前引起更多的头痛。
【问题讨论】:
-
尝试使用单引号而不是双引号。
-
单引号是一样的。没用。
标签: powershell