我在各种脚本上调用Get-Help ... -Full
来确定运行脚本需要哪些参数。然后显示动态表单供用户填写。
我注意到Get-Help
并不总是返回相同的结构,即一些脚本返回
NAME
....
SYNOPSIS
SYNTAX
....
DESCRIPTION
...
PARAMETERS
而其他人只是回归
test2.ps1 [[-foo] <String>] [[-bar] <String>]
我开始沿着一条路径从PSObject
PSObject p = (PSObject)results[0].Properties["Parameters"].Value;
foreach (var info in p.Properties)
{
var b = (PSObject[])info.Value;
foreach ( var c in b)
{
Console.WriteLine(c.Properties["name"].Value);
}
}
但是第二种结果失败了。
是否有更常见的方法来检索我忽略的信息?
答案 0 :(得分:3)
我认为你可能正在寻找Get-Command -Syntax
您可以通过创建CommandInfo
对象并访问Parameters
和ParameterSets
属性来在C#中检索此信息:
CommandInfo getHelpCommand = new CmdletInfo("Get-Help", typeof(Microsoft.PowerShell.Commands.GetHelpCommand));
var Params = getHelpCommand.Parameters;
foreach (string paramKey in Params.Keys)
{
ParameterMetadata currentParam = Params[paramKey];
Console.Write(currentParam.Name);
}