gpt4 book ai didi

powershell - 如何在Powershell中的函数中获取命名但未声明的参数?

转载 作者:行者123 更新时间:2023-12-02 23:08:52 26 4
gpt4 key购买 nike

这是我正在尝试做的一个例子。

Function Get-Parameters { Echo $SomeMagicMethod.Get("Name"); }

Get-Parameters -Name "John Doe"
$SomeMagicMethod是一个自动变量或任何其他获取命名未声明参数的方法。

在Powershell中有可能吗?

最佳答案

您必须自己解析无限制的参数,然后在您要查找的任何参数名称之后找到正确的参数。

我会在一个单独的函数中将其抽象化(您也可以传递$args,但这更干净):

function Get-InvocationParameter
{
param(
[Parameter(Mandatory = $true, Position = 0)]
[System.Management.Automation.InvocationInfo]
$Invocation,

[Parameter(Mandatory = $true, Position = 1)]
[string]
$ParameterName
)

$Arguments = $Invocation.UnboundArguments

$ParamIndex = $Arguments.IndexOf("-$ParameterName")

if($ParamIndex -eq -1){
return
}

return $Arguments[$ParamIndex + 1]
}

然后像这样使用它:
function Get-Parameter
{
Get-InvocationParameter -Invocation $MyInvocation -ParameterName "Name"
}

并且您应该能够在 -Name之后(或什么都没有)看到参数:
PS C:\> Get-Parameter -Name "John Doe"
John Doe
PS C:\> Get-Parameter -Name "John Doe","Jane Doe"
John Doe
Jane Doe
PS C:\> Get-Parameter -ID 123
PS C:\>

关于powershell - 如何在Powershell中的函数中获取命名但未声明的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50124489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com