2011-07-21 7 views
5

Mam następujący prosty skrypt, który akceptuje tekst jako dane wejściowe i zapisuje go na hoście.Co jest wymagane, aby Powershell 2.0 wyświetlał domyślną wartość parametru skryptu na stronie pomocy?

<# 
.SYNOPSIS 
    Writes the input string to the host. 
.PARAMETER Text 
    The text to write to the host. 
#> 

param([string]$text = "hello world!") 
Write-Host $text 

Aby uczynić pomoc dla tego skryptu, I wykonać następujące polecenie w sesji PowerShell gdzie write-text.ps1 jest nazwa tego skryptu.

get-help .\write-text.ps1 -full 

W poniższym wyjścia, ja spodziewałem się zobaczyć domyślną wartość parametru skryptu wymienionych w pomocy - ale ja nie:

PARAMETERS 
    -text <String> 
     The text to write to the host. 

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

Co muszę dodać lub zmienić w tym skrypcie dla silnika pomocy, aby wyrenderować domyślną wartość parametru?

Odpowiedz

5

Nie można wyświetlić wartości domyślnej za pomocą pomocy opartej na komentarzach. Aby to zrobić, musisz utworzyć plik pomocy MAML.

+0

To jest faktycznie udokumentowane na MSDN (czy to czyni tę funkcję? :-). Zajrzyj do sekcji Rozwiązywanie problemów na stronie [about_Comment_Based_Help] (http://technet.microsoft.com/en-us/library/dd819489.aspx) –

+0

Myślę, że powodem tego było utrzymywanie prostego w pisaniu komentarza. – JasonMArcher

+0

Nie, kilka właściwości parametrów (np. Typu) jest pobranych _z kodu_ i zintegrowane z danymi pomocniczymi wraz z komentarzami do dokumentów programisty. Wartością domyślną powinna być jedna z nich - całkowicie przezroczysta dla programisty - więc pomijanie jej nie upraszcza pisania komentarzy do dokumentów. –

3

Pomoc oparta na skryptach może być wybredna, może być tak prosta, jak gdyby zmapowano zmienną w tekście pomocy, ale nie samą zmienną. Długi strzał, wiem ...

Alternatywą że wolę to jednak opis obok parametru:

<# 
.SYNOPSIS 
MumbleMumble 

.DESCRIPTION 
Even more MumbleMumble 

.EXAMPLE 
PS> MumbleMumble 
#> 

function MumbleMumble 
{ 
    param 
    (
     #The in-parameter for MumbleMumble, as text 
     $text 
    ) 

    ... 
} 

Lubię to podejście, ponieważ stawia ona opis obok parametru - i bo wydaje się, że działa :).