2011-08-23 18 views

Respuesta

27

Se especifica que en un atributo encima de cada parámetro de la siguiente manera:

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

    process{ 
     ... 
    } 
} 
9

Para hacer un parámetro obligatorio añadir un "Mandatory = $ true" a la descripción del parámetro. Para que un parámetro sea opcional, simplemente deje la instrucción "Obligatoria".

Este código funciona tanto para los parámetros de script y función:

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

    [String]$nonMandatoryParameter, 

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

) 

Asegúrese de que la declaración de "parámetro" es la primera de ellas (a excepción de los comandos y líneas en blanco), ya sea en el guión o la función.

Puede usar el cmdlet "Get-Help" para verificar los parámetros se han definido correctamente:

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

curiosidad, lo que sucede cuando digamos un .BAT llama un .ps1 y un parámetro obligatorio que queda fuera. ¿Cómo es la respuesta/error de PS1? – Quanda

+0

Cuando llama a una secuencia de comandos de PowerShell sin proporcionar los parámetros obligatorios, la secuencia de comandos le solicita interactivamente antes de ejecutarla, p. "Proporcione valores para los siguientes parámetros: aMandatoryParameter:" – llmora

Cuestiones relacionadas