如何在PowerShell中迭代或获取所有输入参数的列表?

如何在PowerShell中迭代或获取所有输入参数的列表?,powershell,Powershell,这项工作: Get-Command $PSCommandPath | %{ $_.Parameters } 但这并不是: Get-Command $PSCommandPath | %{ $_.Parameters | %{ echo $_.Value } } 为什么?参数属性是一个哈希表(字典): Powershell管道将自动“展开”数组和集合,但不会展开哈希表。如果要通过indivudial元素foreach,必须使用.getenumerator()明确地枚举它们 Parameters属

这项工作:

Get-Command $PSCommandPath | %{ $_.Parameters }
但这并不是:

Get-Command $PSCommandPath | %{ $_.Parameters | %{ echo $_.Value } }

为什么?

参数属性是一个哈希表(字典):

Powershell管道将自动“展开”数组和集合,但不会展开哈希表。如果要通过indivudial元素
foreach
,必须使用
.getenumerator()
明确地枚举它们


Parameters属性是一个哈希表(字典):

Powershell管道将自动“展开”数组和集合,但不会展开哈希表。如果要通过indivudial元素
foreach
,必须使用
.getenumerator()
明确地枚举它们


Parameters属性是一个哈希表(字典):

Powershell管道将自动“展开”数组和集合,但不会展开哈希表。如果要通过indivudial元素
foreach
,必须使用
.getenumerator()
明确地枚举它们


Parameters属性是一个哈希表(字典):

Powershell管道将自动“展开”数组和集合,但不会展开哈希表。如果要通过indivudial元素
foreach
,必须使用
.getenumerator()
明确地枚举它们


我不明白你想做什么?你想把结果输入另一个where语句吗?我不明白你想实现什么?你想把结果输入另一个where语句吗?我不明白你想实现什么?你想把结果输入另一个where语句吗?我不明白你想实现什么?你想把结果导入另一个where语句吗?是的!快到了。。但是这:
echo$\.Value.ToString()
发出:
System.Management.Automation.ParameterMetadata
而不是参数字符串值。。如何输出参数的文本?和`{foreach($I in$.Parameters.GetEnumerator()){echo$I.Value.ToString()}`给出了相同的:
System.Management.Automation.ParameterMetadata
定义“参数的文本”。好的,得到了:
Get命令$PSCommandPath{$.Parameters.GetEnumerator()\%{(Get变量$.Key).Value}
是!快到了。。但是这:
echo$\.Value.ToString()
发出:
System.Management.Automation.ParameterMetadata
而不是参数字符串值。。如何输出参数的文本?和`{foreach($I in$.Parameters.GetEnumerator()){echo$I.Value.ToString()}`给出了相同的:
System.Management.Automation.ParameterMetadata
定义“参数的文本”。好的,得到了:
Get命令$PSCommandPath{$.Parameters.GetEnumerator()\%{(Get变量$.Key).Value}
是!快到了。。但是这:
echo$\.Value.ToString()
发出:
System.Management.Automation.ParameterMetadata
而不是参数字符串值。。如何输出参数的文本?和`{foreach($I in$.Parameters.GetEnumerator()){echo$I.Value.ToString()}`给出了相同的:
System.Management.Automation.ParameterMetadata
定义“参数的文本”。好的,得到了:
Get命令$PSCommandPath{$.Parameters.GetEnumerator()\%{(Get变量$.Key).Value}
是!快到了。。但是这:
echo$\.Value.ToString()
发出:
System.Management.Automation.ParameterMetadata
而不是参数字符串值。。如何输出参数的文本?和`{foreach($I in$.Parameters.GetEnumerator()){echo$I.Value.ToString()}`给出了相同的:
System.Management.Automation.ParameterMetadata
定义“参数的文本”。好的,得到了:
Get命令$PSCommandPath{$.Parameters.GetEnumerator()\%{(Get变量$.Key).Value}
Get-Command $PSCommandPath | %{ $_.Parameters.GetType() }


IsPublic IsSerial Name                                     BaseType                                                              
-------- -------- ----                                     --------                                                              
True     True     Dictionary`2                             System.Object                                                         
Get-Command $PSCommandPath | %{ $_.Parameters.GetEnumerator() | % {echo $_.Value } }