如何在Powershell中显示动态参数的.PARAMETER帮助消息?

时间:2016-04-07 07:07:43

标签: powershell

我在各种模块中为许多功能带来了许多动态参数。

但是,动态参数的.PARAMETER注释块未显示在get-help中。

.PARAMETER
Some details of the dynamic parameter that is defined in dynamicParam { block}

在通过此类函数调用get-help cmdlet时,是否有任何解决方法可以为用户提供动态参数详细信息?

谢谢!

2 个答案:

答案 0 :(得分:0)

如果你通过在后面用空格复制参数名称来作弊,你可以到达那里:

param ([string]${Name })

DynamicParam{
    #insert usual stuff here
    New-Object System.Management.Automation.RuntimeDefinedParameter(
        'Name',  [string], $attributeCollection
    )
    # more stuff
}
begin
{
    $name = $PSBoundParamters.'Name '
}

这意味着您使用Get-Help 获取参数名称,但不是实际文本。这是一个可怕的黑客,但它会让你到达那里...

答案 1 :(得分:-1)

HelpMessage上有一个System.Management.Automation.ParameterAttribute属性,可用于在动态参数中设置帮助文字:

# Create a collection of attributes
$AttributeCollection = New-Object System.Collections.ObjectModel.Collection[System.Attribute]

$ParameterAttribute = New-Object System.Management.Automation.ParameterAttribute
$ParameterAttribute.Mandatory = $true
$ParameterAttribute.Position = 0
$ParameterAttribute.HelpMessage = "YOUR_HELP_MESSAGE"

# Add the attributes to the attributes collection
$AttributeCollection.Add($ParameterAttribute)