2011-03-08 25 views
40

Geliştirme ortamı kurulum komut dosyalarımız için giriş noktası olarak kullandığımız bir powershell komut dosyasına (setup.ps1) sahibim. Bu bir parametre alır: Ben parametreler bölümündePowershell komut dosyası parametrelerim için yardım iletilerinin görünmesini nasıl sağlayabilirim?

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

çalıştırdığınızda

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

, benim yardım mesajı görünmüyor: Ne almak için yapmanız gereken ne yapıyoruz

PARAMETERS 
    -Targets <String[]> 

parametre yardım iletilerim görüntülenecek?

cevap

66

Dosyanın en üstünde, PowerShell yardım sistemi tarafından kodu çözülebilecek belirli bir yorum stili belirlediniz. İşte bir örnek:

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

fazla bilgi için yardım konusuna bakın - man about_comment_based_help.

+6

Görüyorum. Yani 'Parametre 'özniteliğindeki' HelpMessage' özelliği, PowerShell yardım sistemi tarafından aslında * yok sayılır *. Bu kafa karıştırıcı değil. :/ –

+5

Evet, biraz kafa karıştırıcı. Parmetrede bulunan HelpMessage özniteliği, * yok sayılmaz. Zorunlu bir parametre belirtmeden komutu çağırdığınızda kullanılır. Bu noktada, bu parametre için bir değer girmeniz istenir. Bir 'HelpMessage 'belirtirseniz, bu metin bu komutun bir parçası olarak görüntülenir. –

+4

Ama sadece "!" Girerseniz PowerShell bu zorunlu parametreye bir değer sorduğunda. Bu az bilinen bir şey. – JasonMArcher

11

bir yardım başlığı tanımladıktan Anlaşılan eğer, sadece parametre arkasında bir açıklama (#) kullanabilir (bu örnekte:. #The hedefleri çalıştırmak için):

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

Sonuçları

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. 
+5

Alternatif olarak, daha uzun açıklamalar ve daha uzun param adları için daha iyi çalışabilecek parametreden önceki yoruma yorum ekleyebilirsiniz. – 31eee384

+0

Hedef Parametreyi neden parametreleri açıkladığınız bölümde belirtmiyorsunuz, e. g. önce veya sonra .PARAMETER Path' – Timo

+0

PS3'te 'get-help -detailed' için farklı (daha iyi) bir sonuç elde edersiniz: Tüm Parametreler ve '.PARAMETER' içindeki açıklamalar gösterilir. – Timo

İlgili konular