2017-07-11 3 views
4

動的パラメータを持つ関数がある場合、ユーザーがGet-Helpを実行しても動的パラメータが表示されるようにコメントベースのヘルプを追加するにはどうすればよいですか?
私はGet-Help Test-DynamicParam -Fullを実行する場合、私は、このようなコメントベースのヘルプを追加する場合、ここに私の関数は、任意のコメントベースのヘルプコメントベースのヘルプの追加動的パラメータのGet-Help

function Test-DynamicParam{ 
    [CmdletBinding(PositionalBinding=$false)] 
    param(
     [Parameter(Mandatory=$false)][string]$NamedStaticParam1, 
     [Parameter(Mandatory=$false)][string]$NamedStaticParam2 
) 
    dynamicparam { 
     $paramDictionary = new-object -Type System.Management.Automation.RuntimeDefinedParameterDictionary 

     $paramname = "NamedDynamicParam1" 
     $values = 'foo','bar' #would normally get these dynamically 
     $attributes = new-object System.Management.Automation.ParameterAttribute 
     $attributes.ParameterSetName = "__AllParameterSets" 
     $attributes.Mandatory = $true 
     $attributeCollection = new-object -Type System.Collections.ObjectModel.Collection[System.Attribute] 
     $attributeCollection.Add($attributes) 
     $ValidateSet = new-object System.Management.Automation.ValidateSetAttribute($values) 
     $attributeCollection.Add($ValidateSet) 
     $dynParam = new-object -Type System.Management.Automation.RuntimeDefinedParameter($paramname, [string], $attributeCollection) 

     $paramDictionary.Add($paramname, $dynParam) 
     return $paramDictionary 
    } 

    process{ 
    $PSBoundParameters.NamedDynamicParam1 
    $PSBoundParameters.NamedStaticParam1 
    $PSBoundParameters.NamedStaticParam2 
    } 
} 

なしで、それは私に

NAME 
    Test-DynamicParam 
SYNTAX 
    Test-DynamicParam -NamedDynamicParam1 {foo | bar} [-NamedStaticParam1 <string>] [-NamedStaticParam2 <string>] [<CommonParameters>] 
PARAMETERS 
    -NamedDynamicParam1 <string> 

     Required?     true 
     Position?     Named 
     Accept pipeline input?  false 
     Parameter set name   (All) 
     Aliases      None 
     Dynamic?      true 

    -NamedStaticParam1 <string> 

     Required?     false 
     Position?     Named 
     Accept pipeline input?  false 
     Parameter set name   (All) 
     Aliases      None 
     Dynamic?      false 

    -NamedStaticParam2 <string> 

     Required?     false 
     Position?     Named 
     Accept pipeline input?  false 
     Parameter set name   (All) 
     Aliases      None 
     Dynamic?      false 

    <CommonParameters> 
     This cmdlet supports the common parameters: Verbose, Debug, 
     ErrorAction, ErrorVariable, WarningAction, WarningVariable, 
     OutBuffer, PipelineVariable, and OutVariable. For more information, see 
     about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216). 
INPUTS 
    None 
OUTPUTS 
    System.Object 
ALIASES 
    None 
REMARKS 
    None 

を与えるが、:

function Test-DynamicParam{ 
    <# 
    .SYNOPSIS 
     A test for the dynamic parameter list populating 
    .DESCRIPTION 
     Using this for Stack Overflow 
    .NOTES 
     Adding comment-based help breaks the parameter and syntax help 
    #> 
    ... 

ランニングGet-Help Test-DynamicParam -Fullは、構文セクションとPARの両方の静的パラメータのみを示しますAMETERSセクション:

NAME 
    Test-DynamicParam 

SYNOPSIS 
    A test for the dynamic parameter list populating 


SYNTAX 
    Test-DynamicParam [-NamedStaticParam1 <String>] [-NamedStaticParam2 <String>] [<CommonParameters>] 


DESCRIPTION 
    Using this for Stack Overflow 


PARAMETERS 
    -NamedStaticParam1 <String> 

     Required?     false 
     Position?     named 
     Default value     
     Accept pipeline input?  false 
     Accept wildcard characters? false 

    -NamedStaticParam2 <String> 

     Required?     false 
     Position?     named 
     Default value     
     Accept pipeline input?  false 
     Accept wildcard characters? false 

    <CommonParameters> 
     This cmdlet supports the common parameters: Verbose, Debug, 
     ErrorAction, ErrorVariable, WarningAction, WarningVariable, 
     OutBuffer, PipelineVariable, and OutVariable. For more information, see 
     about_CommonParameters (http://go.microsoft.com/fwlink/?LinkID=113216). 

INPUTS 

OUTPUTS 

NOTES 


     Adding comment-based help breaks the parameter and syntax help 


RELATED LINKS 

は私も同じ結果に、コメントベースのヘルプに.PARAMETER NamedDynamicParam1を追加しようとしています。興味深いことに、これは関数の使用には影響しません。ちょうどGet-Help部分です。私はこれがバグだと思っています。ヘルプを追加するとヘルプが機能的に削除されても意味がないので、

答えて

3

a message to June Blender on Twitter pointing her to this question, and she respondedを送信しました。

Unsurprisingly she already has an entire article written about this!

短い答えは:これは壊れています。

は、私が のエントリで「動的パラメータ」セクションを追加し、それを記述するために:

彼女の問題を回避するには、ちょうど.DESCRIPTIONセクションのパラメータ(複数可)の公式-探しヘルプ項目を追加することですコメントベースのヘルプの.DESCRIPTIONセクションの末尾またはXMLヘルプの<maml:description>セクションの最後に、RequiredVersionを追加します。

今後この問題を解決する方法は、PowerShellチームの担当者が決定します。

関連する問題