![](/img/trans.png)
[英]Start-Process Filepath with Variable in Button.add_click won't work as expected
[英]Use variable for filepath parameter of Start-Process
我想运行一个.exe,它可以在许多位置。
$runpath = "$servicepackfolder\SQLServer2008SP1-KB968369-IA64-ENU.exe"
Start-Process -FilePath $runpath -arg "/x:.\$buildfolder\PCU"
或通过这种方式,指定WorkingDirectory:
Start-Process 'SQLServer2008SP1-KB968369-IA64-ENU.exe' -WorkingDirectory $servicepackfolder -arg "/x:.\$buildfolder\PCU"
但是似乎变量没有被解释为字符串。
启动过程:由于出现以下错误,无法执行此命令:系统找不到指定的文件。
我在正确的目录中,如果我从$ runpath变量中获取输出并将其替换为Start-Process调用中的变量,则会得到预期的行为。
这行得通吗,还是我坚持对这些路径进行硬编码。 尝试自动化SQL 2008的补充流构建过程。
如果添加-NoNewWindow
我可以复制您看到的行为,但是如果我不指定该参数,它将按我的测试用例预期的那样工作:
start-process sizeof.exe -WorkingDirectory C:\temp -ArgumentList 1
新窗口闪烁并消失,但我可以从临时目录中看到它正在运行指定的exe。
迟到总比不到好,但是当遇到相同问题时,我已经找到了解决方法,不确定是否将其归类为错误-
Powershell并不总是处理存储在变量中的未转义的反斜杠或引号,或者通过对-FilePath进行字符串处理而很好地创建了字符串,因此对于您的行:
$runpath = "$servicepackfolder\SQLServer2008SP1-KB968369-IA64-ENU.exe"
在使用$ runpath之前,请尝试以下操作(或等效操作):
$cleanpath = $runpath.replace("\","\\").replace('"',"")
.replace(“ \\”,“ \\\\”)。replace('“',”“)转义斜线并消除字符串处理和传递引入的引号,这似乎可以解决此问题(在某些情况下)。
我想对您来说有点晚,但是希望这可以帮助其他人使用此工具。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.