Powershell Start-Process,带有可变FilePath

时间:2018-03-30 13:49:45

标签: powershell

您好我需要使用powershell运行变量进程。 以下代码不起作用,因为出于某种原因,Powershell不会扩展变量:

$ pip show tensorflow
Name: tensorflow
Version: 1.5.0
Summary: TensorFlow helps the tensors flow

但是我收到了这个错误

  

Start-Process:由于错误导致无法运行此命令:系统找不到指定的文件

     

+ Start-Process $ exe -Verb runas;

2 个答案:

答案 0 :(得分:1)

$var - 变量在您声明$exe - 字符串时展开,只要您使用问题中的双引号即可。但单引号$exe = 'c:\$var.exe'不起作用,因为单引号构成文字字符串。

输出$exe以验证路径。您的$var值可能不对。

错误只是说它运行了哪一行,而不是它实际使用的路径,除了它存储在$exe - 变量中。

$var = "nonexistingfile"
$exe = "c:\$var.exe"
$exe
c:\nonexistingfile.exe

Start-Process $exe
Start-Process : This command cannot be run due to the error: The system cannot find the file specified.
At line:1 char:1
+ Start-Process $exe
+ ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Start-Process], InvalidOperationException
    + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand

但是使用有效路径:

$var = "windows\system32\notepad"
$exe = "c:\$var.exe"
$exe
c:\windows\system32\notepad.exe

Start-Process $exe
#Starts notepad

答案 1 :(得分:-1)

我喜欢使用数组和-join组合字符串:

$exe = 'C:\',$var,'.exe' -join ''

接下来我将测试可执行文件是否存在并运行它或写错误

if(Test-Path -LiteralPath $exe) {
    Start-Process $exe -Verb runas
} else {
    Write-Error "the executable could not be found"
}