我试图确定用户输入参数的顺序。因此,使用以下示例:
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-Content
,Read-Host
但它们似乎没有提供解决方案(即,一旦用户输入参数值,函数/脚本将执行其他所有操作,而无需额外的用户输入 - 例如提供超出已命名参数顺序的顺序输入)。
必须有一个明显的解决方案,但我要么搜索错误的关键字,要么误解了解决方案(例如,也许Read-Host
是解决方案,但我没有正确掌握它以从原始用户参数输入中提取信息)。
我认为您正在寻找$MyInvocation的属性。尝试以下操作: