构造一个字符串参数来运行 - powershell

Construct a string parameter to function - powershell

我想知道如何即时构造一个字符串作为函数的参数? 例子 说我有一个像

这样的函数
function MyFunc
{
    Param
         (
              [Parameter(mandatory=$true)] [string] $myString,
              [Parameter(mandatory=$true)] [int] $myInt
         )

    Write-Host ("Param 1 is {0}" -f $myString)
    Write-Host ("Param 2 is {0}" -f $myInt)


}

如何在动态构建第一个字符串参数时调用它,例如

$myName = "Casper"
$myInt=7

MyFunc "Name is " + $myName $myInt

我试过将 {} 放在第一个“位”周围,例如

MyFunc {Name is " + $myName} $myInt

然后错误地打印出来

Param 1 is "Name is "+$myName
Param 2 is 7

我要它打印的是

Param 1 is "Name is Casper"
Param 2 is 7

我知道更好的方法是先设置字符串,

$pm1 = "Name is " + $myName

并调用函数 我的函数 $pm1 $myInt

但我只是想知道它是如何即时完成的。如何构造字符串并将其作为函数调用的第一个参数传递?希望这很清楚。

谢谢

根据一般经验,您始终可以使用子表达式运算符 $(...) 或分组运算符 (...):

将任何复杂表达式嵌套在单独的管道中
MyCommand $("complex",(Get-Something),"argument","expression" -join '-')

但在您的特定情况下,我们不需要它 - 您只需将变量表达式 $myName 放在字符串文字中,PowerShell 将自动计算并扩展其值:

MyFunc "Name is $myName" $myInt

如果变量表达式后跟一些字符,否则这些字符将构成变量路径的有效部分,请使用大括号 {} 作为限定符:

MyFunc "Name is ${myName}" $myInt