Powershell 参数:如何读取用户输入的顺序

Powershell 参数:如何读取用户输入的顺序

我正在尝试确定用户输入参数的顺序。因此,使用以下示例:

function RepeatParamOrder {
    [CmdletBinding()]
    param
    (
        [bool]$param1=$false,
        [bool]$param2=$false,
        [bool]$param3=$false
    )

    Write-Output <order user entered params>
}

如果用户输入以下内容:

C:\>RepeatParamOrder -param3 true -param1 true

我理想情况下希望以某种分隔格式捕获以下顺序:(param3,param1)

顺序之所以重要,是因为用户可以输入很多参数,而他们输入参数的顺序就是 RETURN 数组输出与这些参数关联的值的顺序。因此,在这个例子中,返回了一个包含相关数据的二维数组,(param3,param1)param2由于用户不需要这些信息,因此该数组被忽略。

我已经搜索了一个多小时,希望找到一个解决方案,让脚本能够读取输入的顺序参数,但一直没有找到解决方案。我还搜索了如何简单地读取整行,C:\>RepeatParamOrder -param3 true -param1 true以便我可以创建一个循环来解析信息。虽然似乎应该有一个命令只返回行的文本,但我也找不到那个解决方案。我查看了Get-ContentRead-Host但它们似乎没有提供解决方案(即,一旦用户输入参数值,函数/脚本就会执行其他所有操作,而无需用户进行额外输入 - 例如提供超出已输入命名参数的顺序的顺序)。

一定有一个显而易见的解决方案,但我要么搜索了错误的关键字,要么误解了解决方案(例如,也许Read-Host是解决方案,但我没有正确掌握它以从原始用户参数输入中提取信息)。

答案1

我认为你正在寻找的属性$我的调用。请尝试以下操作:

function RepeatParamOrder {
    [CmdletBinding()]
    param
    (
        [bool]$param1=$false,
        [bool]$param2=$false,
        [bool]$param3=$false
    )

    Write-Output $MyInvocation.Line
}

相关内容