构造一个字符串参数来运行 - 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
我想知道如何即时构造一个字符串作为函数的参数? 例子 说我有一个像
这样的函数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