给定任何Cmdlet(Powershell v3)我想获得仅包含选定属性(例如名称和类型)的参数列表。输出为JSON应该是这样的:
[
{
"Name": "Path",
"ParameterType": "string"
},
{
"Name": "Filter",
"ParameterType": "string"
},
{
"Name": "Recurse",
"ParameterType": "switch"
}
]
我有参数集合,但我似乎无法只选择我想要的那些参数:
$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
},
...
]
答案 0 :(得分:2)
$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
},
...
]