获取作为C#对象的帮助参数

获取作为C#对象的帮助参数,c#,powershell,C#,Powershell,我正在呼叫获取帮助-对各种脚本执行完整的,以确定运行脚本所需的参数。然后显示一个动态表单供用户填写 我注意到,Get Help并不总是返回相同的结构,即一些脚本返回相同的结构 名称 .... 提要 语法 .... 描述 ... 参数 而其他人只是返回 test2.ps1[[-foo][[-bar]] 我开始沿着一条路径从PSObject检索此信息: PSObject p=(PSObject)结果[0]。属性[“参数”]。值; foreach(p.Properties中的var信息) { va

我正在呼叫
获取帮助-对各种脚本执行完整的
,以确定运行脚本所需的参数。然后显示一个动态表单供用户填写

我注意到,
Get Help
并不总是返回相同的结构,即一些脚本返回相同的结构

名称
....
提要
语法
....
描述
...
参数
而其他人只是返回

test2.ps1[[-foo][[-bar]]
我开始沿着一条路径从
PSObject
检索此信息:

PSObject p=(PSObject)结果[0]。属性[“参数”]。值;
foreach(p.Properties中的var信息)
{
var b=(PSObject[])info.Value;
foreach(b中的var c)
{
Console.WriteLine(c.Properties[“name”].Value);
}
}
但第二种结果却失败了


有没有一种更常见的方法来检索我忽略的信息?

我想您可能正在查找
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);
}

输出的不同之处在于,显示扩展信息的脚本已经启用,而其他脚本刚刚启用。+1用于将我指向Get命令语法,这至少会返回可预测的结果。然而,我对CMdleInfo感到困惑。我似乎不知道如何实际使用它。
参数
参数集
字典中的项目包含有关每个参数是否为强制参数、其预期类型等的信息。我的观点是,您可以使用这些信息来确定语法是什么,并生成自己的
命令名[[-参数]]
-样式字符串