是否有可能从子属性中分割参数?
例如,这里有示例函数来说明:
function Get-Pow{
param(
[int]$x,
[int]$y
)
[Math]::Pow($x,$y)
}可以使用以下方法调用此函数:
$args = @{ x=10; y=2 }
Get-Pow @args # outputs 100这也可以使用简单的迭代来调用:
$powsOfTen = @(
@{ x=10; y=1 }
@{ x=10; y=2 }
@{ x=10; y=3 }
)
foreach($p in $powsOfTen){
Get-Pow @p # Outputs 10,100,1000
}但是,如果参数哈希表来自子属性,则不工作:
$valuesToCompute = @(
@{ Id=1; Arguments = @{ x = 10; y= 1} }
@{ Id=2; Arguments = @{ x = 10; y= 2} }
@{ Id=3; Arguments = @{ x = 10; y= 3} }
)
foreach($valueToCompute in $valuesToCompute){
Write-Host $valueToCompute.Id
Get-pow @($valueToCompute.Arguments)
}当args来自子属性时,我应该如何调用函数?
我尝试了@valueToCompute.Arguments,我尝试了$args = $valueToCompute.Arguments; Get-Pow @args,但是我没有尝试工作。
发布于 2015-09-28 19:59:59
这对我来说很管用:
function Get-Pow{
param(
[int]$x,
[int]$y
)
[Math]::Pow($x,$y)
}
$valuesToCompute = @(
@{ Id=1; Arguments = @{ x = 10; y= 1} }
@{ Id=2; Arguments = @{ x = 10; y= 2} }
@{ Id=3; Arguments = @{ x = 10; y= 3} }
)
foreach($valueToCompute in $valuesToCompute){
Write-Host $valueToCompute.Id
$splat = $valueToCompute.Arguments;
Get-pow @splat
}注意,通过阅读飞溅的医生,@Args是一个保留变量。请参阅“溅出命令参数”一节。
https://stackoverflow.com/questions/32830555
复制相似问题