我正在尝试确定用户输入参数的顺序。因此,使用以下示例:
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
是解决方案,但我没有正确掌握它以从原始用户参数输入中提取信息)。
答案1
我认为你正在寻找的属性$我的调用。请尝试以下操作:
function RepeatParamOrder {
[CmdletBinding()]
param
(
[bool]$param1=$false,
[bool]$param2=$false,
[bool]$param3=$false
)
Write-Output $MyInvocation.Line
}