web-dev-qa-db-ja.com

Powershellスクリプトパラメーターのヘルプメッセージを表示するにはどうすればよいですか?

PowerShellスクリプト(setup.ps1)、開発環境セットアップスクリプトのエントリポイントとして使用します。パラメータを取ります:

param(
    [Parameter(Position=0,HelpMessage="The targets to run.")]
    [Alias("t")]
    [string[]]
    $Targets = "Help"
)

走るとき

PS > get-help .\setup.ps1 -detailed

パラメータセクションに、ヘルプメッセージが表示されません。

PARAMETERS
    -Targets <String[]>

パラメータヘルプメッセージを表示するには何をする必要がありますか?

56
Aaron Jensen

PowerShellヘルプシステムでデコードできる特定のスタイルのコメントをファイルの先頭に配置します。次に例を示します。

<#
.SYNOPSIS
    .
.DESCRIPTION
    .
.PARAMETER Path
    The path to the .
.PARAMETER LiteralPath
    Specifies a path to one or more locations. Unlike Path, the value of 
    LiteralPath is used exactly as it is typed. No characters are interpreted 
    as wildcards. If the path includes escape characters, enclose it in single
    quotation marks. Single quotation marks tell Windows PowerShell not to 
    interpret any characters as escape sequences.
.EXAMPLE
    C:\PS> 
    <Description of example>
.NOTES
    Author: Keith Hill
    Date:   June 28, 2010    
#>
function AdvFuncToProcessPaths
{
    [CmdletBinding(DefaultParameterSetName="Path")]
    param(
        [Parameter(Mandatory=$true, Position=0, ParameterSetName="Path", 
                   ValueFromPipeline=$true, 
                   ValueFromPipelineByPropertyName=$true,
                   HelpMessage="Path to ...")]
        [ValidateNotNullOrEmpty()]
        [string[]]
        $Path,

        [Alias("PSPath")]
        [Parameter(Mandatory=$true, Position=0, ParameterSetName="LiteralPath", 
                   ValueFromPipelineByPropertyName=$true,
                   HelpMessage="Path to ...")]
        [ValidateNotNullOrEmpty()]
        [string[]]
        $LiteralPath
    )
    ...

詳細については、ヘルプトピックを参照してください-man about_comment_based_help

90
Keith Hill

ヘルプヘッダーが定義されている場合は、パラメーターの後ろにコメント(#)を使用するだけです(この例では#実行するターゲット。):

<#
.SYNOPSIS
    .
.DESCRIPTION
    .
.PARAMETER Path
    The path to the .
.PARAMETER LiteralPath
    Specifies a path to one or more locations. Unlike Path, the value of 
    LiteralPath is used exactly as it is typed. No characters are interpreted 
    as wildcards. If the path includes escape characters, enclose it in single
    quotation marks. Single quotation marks tell Windows PowerShell not to 
    interpret any characters as escape sequences.
#>

Param(
    [String]$Targets = "Help"   #The targets to run.
)

結果:

PS C:\> Get-help .\Setup.ps1 -Detailed

NAME
    C:\Setup.ps1

SYNOPSIS
    .


SYNTAX
    C:\Setup.ps1 [[-Targets] <String>] [<CommonParameters>]


DESCRIPTION
    .


PARAMETERS
    -Targets <String>
        The targets to run.
19
iRon

1つファイルの<# .SYNOPSIS #>部分が一番上に必要ファイルを機能させるにはインラインでパラメータをうまくコメント

<# .SYNOPSIS #>
param(
   [String]$foo   ## my 1st cool param
  ,[Switch]$bar  ## my 2nd crazy switch
)
...

PS 5.1.14409.1018でチェック)

2