使用$ PSBoundParameters修剪字符串参数

时间:2014-10-23 14:17:11

标签: string powershell trim

我有一个函数,它有很多参数,我想修剪传入的任何字符串参数。我把一个$ 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'"
}

有没有办法在不指定每个变量的情况下执行此操作? 谢谢!

1 个答案:

答案 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命令,但我想它需要出于某种原因!