2011-08-23 14 views

risposta

27

Si specifica che in un attributo sopra ogni parametro in questo modo:

function Do-Something{ 
    [CmdletBinding()] 
    param(
     [Parameter(Position=0,mandatory=$true)] 
     [string] $aMandatoryParam, 
     [Parameter(Position=1,mandatory=$true)] 
     [string] $anotherMandatoryParam) 

    process{ 
     ... 
    } 
} 
9

Per effettuare una parametro obbligatorio aggiungere un "Mandatory = $ true" per la descrizione dei parametri. Per rendere opzionale un parametro, basta uscire dall'istruzione "Obbligatorio".

Questo codice funziona per entrambi i parametri di script e funzioni:

[CmdletBinding()] 
param(
    [Parameter(Mandatory=$true)] 
    [String]$aMandatoryParameter, 

    [String]$nonMandatoryParameter, 

    [Parameter(Mandatory=$true)] 
    [String]$anotherMandatoryParameter 

) 

Assicurarsi che l'affermazione "param" è il primo (tranne che per i comandi e le righe vuote) in entrambi lo script o della funzione.

È possibile utilizzare il cmdlet "Get-Help" per verificare i parametri sono stati definiti correttamente:

PS C:\> get-help Script.ps1 -full 
[...] 
PARAMETERS 
    -aMandatoryParameter <String> 

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

    -NonMandatoryParameter <String> 

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

    -anotherMandatoryParameter <String> 

     Required?     true 
     Position?     3 
     Default value 
     Accept pipeline input?  false 
     Accept wildcard characters? 
+0

solo curioso, che cosa accade quando diciamo una bat chiama un ps1 e un parametro obbligatorio è lasciato su. come appare la risposta/errore PS1? – Quanda

+0

Quando si chiama uno script PowerShell senza fornire i parametri obbligatori, lo script richiede all'utente di interagire in modo interattivo prima dell'esecuzione, ad es. "Fornire i valori per i seguenti parametri: aMandatoryParameter:" – llmora

Problemi correlati