我有一个功能
Function newFunction($1, $2, $3)
{
$1 + $2 + $3
}
和
Param (
[string]$intro= 'My Name is ',
[string]$name= 'Mark. ',
[string]$greeting= 'Hello'
)
它可以运行。 newFunction $ intro $ name $ greeting
导致。 我的名字叫马克。你好
我想要做的是存储多个Params并将它们传递给函数的某种方式(下一部分中的这种语法可能是错误的,但希望你明白这一点。
Param ({
[string]$intro= 'My Name is ',
[string]$name= 'Mark. ',
[string]$greeting= 'Hello'
}{
[string]$intro= 'My Name is ',
[string]$name= 'not Mark. ',
[string]$greeting= 'Howdy!'
}
我怎么能得到一个for循环传递其中的每一个来打印 我的名字叫马克。你好 我的名字不是马克。你好!
我感谢任何帮助。
答案 0 :(得分:1)
让我们从一个完整的函数定义开始:
function New-Greeting
{
param(
[string]$Intro = "My name is:",
[string]$Name = "Mark",
[string]$Greeting = "Hello!"
)
return "$Greeting $Intro $Name"
}
然后,您需要将参数参数从调用范围传递给函数,而不是在函数定义中。
例如,变量Name
参数值:
$Names = "Mark","John","Bobby"
foreach($Name in $Names){
New-Greeting -Name $Name
}
将返回:
Hello! My name is: Mark
Hello! My name is: John
Hello! My name is: Bobby
如果你想要多组变量参数,可以考虑将它们存储在哈希表中,然后将它们展开,如下所示:
# Define array of hashtables
$GreetingArguments = @(
@{
Intro = "They call me"
Name = "Mark"
Greeting = "Howdy!"
},@{
Name = "John"
Greeting = "Good morning!"
},@{
Intro = "I go by: "
Name = "Bobby"
}
)
foreach($Greeting in $GreetingArguments){
# "splat" the individual hashtables from the array
New-Greeting @Greeting
}
导致:
Howdy! They call me Mark
Good morning! My name is: John
Hello! I go by: Bobby
如您所见,只要您 传递参数,New-Greeting
默认为param()
块中定义的字符串