powershell 如何获取传递给函数的所有参数(vs. optional only $args)

cbwuti44  于 11个月前  发布在  Shell
关注(0)|答案(4)|浏览(159)

$args只返回可选参数。我如何获得所有函数参数?

cmssoen2

cmssoen21#

$PSBoundParameters获取所有与哈希表中的绑定值一起沿着的参数,它不会获取可选的/额外的参数。这就是$args的作用。AFAICT获得你想要的东西的唯一方法是合并:

$allArgs = $PsBoundParameters.Values + $args

字符串

aiazj4mn

aiazj4mn2#

$args返回任何 * 未声明的 * 参数,而不是可选参数。所以不要声明参数。
在PowerShell v2中,您可以使用$PSBoundParameters以结构化的方式获取所有参数。

rsl1atfo

rsl1atfo3#

$MyInvocation.Line也是一个很好的知道。
但这也包括实际的指挥。

qv7cva1a

qv7cva1a4#

动态检查和显示函数参数的有用方法

Write-Host "Parameters and Default Values:"
foreach ($param in $MyInvocation.MyCommand.Parameters.keys) {
    Write-Host "${param}: $(Get-Variable -Name $param -ValueOnly -ErrorAction SilentlyContinue)"
}

字符串
和仅带值的参数

Write-Host "Parameters and Default Values:"
foreach ($param in $MyInvocation.MyCommand.Parameters.keys) {
    $value = Get-Variable -Name $param -ValueOnly -ErrorAction SilentlyContinue
    if (-not $null -eq [string]$value) {
        Write-Host "${param}: $value"
    }
}

相关问题