我有一个函数,它有很多参数,我想修剪传入的任何字符串参数。我把一个$ PSBoundParameters循环放在一起,它会改变变量,但不能保持变化时稍后会调用单个变量。
function TrimStringParameters
{ [CmdletBinding()]
param( [string] $var )
foreach ($key in $($PSBoundParameters.keys)) {
if ($($PSBoundParameters[$key]).GetType().Name -eq "String") {
write-verbose "before '$($PSBoundParameters[$key])'"
$PSBoundParameters[$key] = $($PSBoundParameters[$key].trim())
write-verbose "After '$($PSBoundParameters[$key])'"
Set-Variable -Name $($PSBoundParameters[$key]) -Value $($PSBoundParameters[$key].trim())
write-verbose "After After '$($PSBoundParameters[$key])'"
}
}
Write-verbose "`$var = '$var'"
}
有没有办法在不指定每个变量的情况下执行此操作? 谢谢!
答案 0 :(得分:2)
想出来了!
行:
$PSBoundParameters[$key] = $($PSBoundParameters[$key].trim())
似乎没有长期做任何事情,但Set-Variable行确实
Set-Variable -Name $($PSBoundParameters[$key]) -Value $($PSBoundParameters[$key].trim())
问题是Set-Variable行应该使用Name参数的$ key变量!
Set-Variable -Name $key -Value $($PSBoundParameters[$key].trim())
我仍然很奇怪你需要Set-Variable命令,但我想它需要出于某种原因!