如何在Powershell tr​​y / catch块中放置变量

时间:2017-08-01 13:06:43

标签: string powershell

我的脚本中有一个变量用于我的路径:

$path = "C:\project\"

然后在我的一个函数中:

function DoWork {
    try 
    {
        C:\project\myapp.exe /silent
    }
    catch 
    {

    }
}

我想用变量替换try块中的字符串文字。我已经尝试将$ {path}放在那里,并且($ path +" myapp.exe / silent")以及其他组合,但我似乎仍然会出错。

用路径变量替换文字路径的正确方法是什么?

3 个答案:

答案 0 :(得分:5)

将路径构造为字符串,然后将字符串作为参数提供给调用操作符(&):

try 
{
    $appPath = Join-Path $path myapp.exe
    & $appPath
}
catch 
{

}

&的后续字符串参数将被视为第一个参数表示的命令的参数:

& $appPath '/silent'

答案 1 :(得分:1)

要将动态参数列表传递给外部函数调用(根据您的注释),请使用splatting:

$Params = @('/silent','/quiet')
$exe = "$Path\myapp.exe"
& $exe @Params

答案 2 :(得分:0)

你也可以试试这个:

    function DoWork {
    $path = "C:\project\"
    try 
    {
        "$path\myapp.exe"
    }
    catch 
    {

    }
}