在Powershell中,如何指定包含$ env:userprofile的exe的路径?

时间:2019-12-24 22:18:42

标签: powershell

我正在尝试创建一个脚本来运行exe文件夹中的userprofile,但是我似乎无法使该命令正常工作。知道如何使它正常工作吗?

我尝试过: $env:userprofile\es-cli\es.exe myParameter

我收到一条错误消息: Unexpected token '\es-cli\es.exe' in expression or statement.

也尝试过:

($env:userprofile)\es-cli\es.exe myParameter遇到错误unexpected token \es-cli\es.exe

`$($env:userprofile)\es-cli\es.exe myParameter`遇到错误the term $ is not recognized as the name of a cmdlet...

$loc = "{0}\es-cli\es.exe" -f $env:userprofile $loc myParameter # cant do this because $loc is a string

3 个答案:

答案 0 :(得分:1)

找到了解决方案。感谢enter image description here的帖子。我最终做了以下事情:

& ("{0}\es-cli\es.exe" -f $env:userprofile) myParameter

基于下面Mathias的评论,我最终使用:

&(Join-Path $env:USERPROFILE 'es-cli\es.exe') myParam

答案 1 :(得分:0)

我知道这是很多代码。但我喜欢它,因为它使您可以更好地控制启动的程序的行为,统计信息,获取返回码以及在需要时返回错误。这是执行Startprocess方法的漫长方法。

$Path = "$($env:userprofile)\es-cli\es.exe"
$Args = "myParameter"
$newProcess = new-object System.Diagnostics.ProcessStartInfo $Path;
$newProcess.Arguments = $Args
$RunPro2 = New-Object System.Diagnostics.Process
$RunPro2.StartInfo = $NewProcess
$RunPro2.Start()
$RunPro2.WaitForExit()
$ProcessExitCode = $RunPro2.ExitCode.ToString()

答案 2 :(得分:0)

使用呼叫运营商应该可以:

& $env:userprofile\es-cli\es.exe myParameter

假设您不想将其添加到路径中:

$env:path += ";$env:userprofile\es-cli"
es myParameter