String 使用$PSBoundParameters修剪字符串参数

String 使用$PSBoundParameters修剪字符串参数,string,powershell,trim,String,Powershell,Trim,我有一个函数,它有很多参数,我想修剪传入的任何字符串参数。我创建了一个$PSBoundParameters循环,它将更改变量,但在稍后调用单个变量时不会保留更改 function TrimStringParameters { [CmdletBinding()] param( [string] $var ) foreach ($key in $($PSBoundParameters.keys)) { if ($($PSBoundParameters[$key])

我有一个函数,它有很多参数,我想修剪传入的任何字符串参数。我创建了一个$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'"
}
有没有一种方法可以在不依次指定每个变量的情况下执行此操作? 谢谢

找到了

该行:

$PSBoundParameters[$key] = $($PSBoundParameters[$key].trim())
从长远来看似乎没有什么作用,但Set变量行起作用

Set-Variable -Name $($PSBoundParameters[$key]) -Value $($PSBoundParameters[$key].trim())
问题是Set变量行应该使用$key变量作为Name参数

Set-Variable -Name $key -Value $($PSBoundParameters[$key].trim())

对我来说仍然很奇怪,您需要Set Variable命令,但我想出于某种原因,它需要存在

我正要告诉你去做那件事。干得好。似乎
$PSBoundParameters
是参数的副本,而不是直接链接到它们。。。可能地