IT Share you

내 Powershell 스크립트 매개 변수에 대한 도움말 메시지가 표시되도록하려면 어떻게합니까?

shareyou 2020. 12. 15. 20:25
반응형

내 Powershell 스크립트 매개 변수에 대한 도움말 메시지가 표시되도록하려면 어떻게합니까?


setup.ps1개발 환경 설정 스크립트의 진입 점으로 사용 하는 powershell 스크립트 ( )가 있습니다. 매개 변수가 필요합니다.

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

내가 달릴 때

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

매개 변수 섹션에 내 도움말 메시지가 나타나지 않습니다.

PARAMETERS
    -Targets <String[]>

매개 변수 도움말 메시지를 표시하려면 어떻게해야합니까?


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.


도움말 헤더가 정의되어있는 경우 매개 변수 뒤에 설명 (#)을 사용할 수 있습니다 (이 예에서는 #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.
)

결과 :

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.

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)

ReferenceURL : https://stackoverflow.com/questions/5237723/how-do-i-get-help-messages-to-appear-for-my-powershell-script-parameters

반응형