How do I get help messages to appear for my Powershell script parameters?

后端 未结 3 635
庸人自扰
庸人自扰 2020-12-07 11:24

I have a powershell script (setup.ps1), that we use as the entry point for our development environment setup scripts. It takes a parameter:

par         


        
相关标签:
3条回答
  • 2020-12-07 11:38

    You put a certain style of comment at the top of the file that can be decoded by the PowerShell help system. Here's an example:

    <#
    .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
        )
        ...
    

    For more info see the help topic - man about_comment_based_help.

    0 讨论(0)
  • 2020-12-07 11:48

    one just needs the <# .SYNOPSIS #> part on top of the file to make it work and you can comment your params nicely inline:

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

    (checked with PS 5.1.14409.1018)

    0 讨论(0)
  • 2020-12-07 11:50

    Apparently if you have a help header defined, you can just use a remark (#) behind the parameter (in this example: #The targets to run.):

    <#
    .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.
    )
    

    Results in:

    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.
    
    0 讨论(0)
提交回复
热议问题