获取 Powershell CmdLet 参数的选定属性
Get Selected Properties of Parameters of a Powershell CmdLet
给定任何 Cmdlet (Powershell v3),我想获得仅包含 selected 属性(例如名称和类型)的参数列表。 JSON 的输出应该是这样的:
[
{
"Name": "Path",
"ParameterType": "string"
},
{
"Name": "Filter",
"ParameterType": "string"
},
{
"Name": "Recurse",
"ParameterType": "switch"
}
]
我有参数集合,但我似乎无法 select 只有那些我想要的参数:
$cmd = gcm Get-ChildItem
$parameters = $cmd.Parameters.Values
for($i=0; $i -lt $parameters.Count; $i++) {
$parameters[$i] = Select-Object Name,ParameterType -InputObject $parameters[$i]
}
$parameters | ConvertTo-JSON -depth 1
我得到所有参数:
[
{
"Name": "Path",
"ParameterType": "string",
"ParameterSets": "System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterSetMetadata]",
"IsDynamic": false,
"Aliases": "",
"Attributes": "System.Management.Automation.ParameterAttribute System.Management.Automation.ArgumentTypeConverterAttribute",
"SwitchParameter": false
},
{
"Name": "Filter",
"ParameterType": "string",
"ParameterSets": "System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterSetMetadata]",
"IsDynamic": false,
"Aliases": "",
"Attributes": "System.Management.Automation.ParameterAttribute System.Management.Automation.ArgumentTypeConverterAttribute",
"SwitchParameter": false
},
...
]
$cmd = gcm Get-ChildItem
$cmd.Parameters.Values |
Select Name,ParameterType,SwitchParameter |
ConvertTo-Json -depth 1
结果:
[
{
"Name": "Path",
"ParameterType": "string[]",
"SwitchParameter": false
},
{
"Name": "LiteralPath",
"ParameterType": "string[]",
"SwitchParameter": false
},
{
"Name": "Filter",
"ParameterType": "string",
"SwitchParameter": false
},
...
]
给定任何 Cmdlet (Powershell v3),我想获得仅包含 selected 属性(例如名称和类型)的参数列表。 JSON 的输出应该是这样的:
[
{
"Name": "Path",
"ParameterType": "string"
},
{
"Name": "Filter",
"ParameterType": "string"
},
{
"Name": "Recurse",
"ParameterType": "switch"
}
]
我有参数集合,但我似乎无法 select 只有那些我想要的参数:
$cmd = gcm Get-ChildItem
$parameters = $cmd.Parameters.Values
for($i=0; $i -lt $parameters.Count; $i++) {
$parameters[$i] = Select-Object Name,ParameterType -InputObject $parameters[$i]
}
$parameters | ConvertTo-JSON -depth 1
我得到所有参数:
[
{
"Name": "Path",
"ParameterType": "string",
"ParameterSets": "System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterSetMetadata]",
"IsDynamic": false,
"Aliases": "",
"Attributes": "System.Management.Automation.ParameterAttribute System.Management.Automation.ArgumentTypeConverterAttribute",
"SwitchParameter": false
},
{
"Name": "Filter",
"ParameterType": "string",
"ParameterSets": "System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterSetMetadata]",
"IsDynamic": false,
"Aliases": "",
"Attributes": "System.Management.Automation.ParameterAttribute System.Management.Automation.ArgumentTypeConverterAttribute",
"SwitchParameter": false
},
...
]
$cmd = gcm Get-ChildItem
$cmd.Parameters.Values |
Select Name,ParameterType,SwitchParameter |
ConvertTo-Json -depth 1
结果:
[
{
"Name": "Path",
"ParameterType": "string[]",
"SwitchParameter": false
},
{
"Name": "LiteralPath",
"ParameterType": "string[]",
"SwitchParameter": false
},
{
"Name": "Filter",
"ParameterType": "string",
"SwitchParameter": false
},
...
]