Set di parametri del cmdletCmdlet parameter sets

PowerShell usa i set di parametri per consentire la scrittura di un singolo cmdlet che può eseguire diverse azioni per diversi scenari.PowerShell uses parameter sets to enable you to write a single cmdlet that can do different actions for different scenarios. I set di parametri consentono di esporre parametri diversi all'utente.Parameter sets enable you to expose different parameters to the user. Per restituire informazioni diverse in base ai parametri specificati dall'utente.And, to return different information based on the parameters specified by the user.

Esempi di set di parametriExamples of parameter sets

Ad esempio, il cmdlet di PowerShell Get-EventLog restituisce informazioni diverse a seconda che l'utente specifichi il parametro List o logName .For example, the PowerShell Get-EventLog cmdlet returns different information depending on whether the user specifies the List or LogName parameter. Se viene specificato il parametro List , il cmdlet restituisce le informazioni sui file di log, ma non le informazioni sull'evento contenute.If the List parameter is specified, the cmdlet returns information about the log files themselves but not the event information they contain. Se viene specificato il parametro logName , il cmdlet restituisce informazioni sugli eventi in un registro eventi specifico.If the LogName parameter is specified, the cmdlet returns information about the events in a specific event log. I parametri List e logName identificano due set di parametri distinti.The List and LogName parameters identify two separate parameter sets.

Parametro univocoUnique parameter

Ogni set di parametri deve avere un parametro univoco usato dal runtime di PowerShell per esporre il set di parametri appropriato.Each parameter set must have a unique parameter that the PowerShell runtime uses to expose the appropriate parameter set. Se possibile, il parametro Unique deve essere un parametro obbligatorio.If possible, the unique parameter should be a mandatory parameter. Quando un parametro è obbligatorio, l'utente deve specificare il parametro e il runtime di PowerShell usa tale parametro per identificare il set di parametri.When a parameter is mandatory, the user must specify the parameter, and the PowerShell runtime uses that parameter to identify the parameter set. Il parametro Unique non può essere obbligatorio se il cmdlet è progettato per essere eseguito senza specificare alcun parametro.The unique parameter can't be mandatory if your cmdlet is designed to run without specifying any parameters.

Set di parametri multipliMultiple parameter sets

Nella figura seguente la colonna sinistra mostra tre set di parametri validi.In the following illustration, the left column shows three valid parameter sets. Il parametro a è univoco per il primo set di parametri, il parametro B è univoco per il secondo set di parametri e il parametro C è univoco per il terzo set di parametri.Parameter A is unique to the first parameter set, parameter B is unique to the second parameter set, and parameter C is unique to the third parameter set. Nella colonna a destra i set di parametri non hanno un parametro univoco.In the right column, the parameter sets don't have a unique parameter.

Illustrazione dei set di parametri

Requisiti per i set di parametriParameter set requirements

I requisiti seguenti si applicano a tutti i set di parametri.The following requirements apply to all parameter sets.

  • Ogni set di parametri deve avere almeno un parametro univoco.Each parameter set must have at least one unique parameter. Se possibile, rendere questo parametro un parametro obbligatorio.If possible, make this parameter a mandatory parameter.

  • Un set di parametri che contiene più parametri posizionali deve definire posizioni univoche per ogni parametro.A parameter set that contains multiple positional parameters must define unique positions for each parameter. Non è possibile specificare la stessa posizione per due parametri posizionali.No two positional parameters can specify the same position.

  • Solo un parametro in un set può dichiarare la ValueFromPipeline parola chiave con un valore di true .Only one parameter in a set can declare the ValueFromPipeline keyword with a value of true. Più parametri possono definire la ValueFromPipelineByPropertyName parola chiave con un valore true .Multiple parameters can define the ValueFromPipelineByPropertyName keyword with a value of true.

  • Se per un parametro non è specificato alcun set di parametri, il parametro appartiene a tutti i set di parametri.If no parameter set is specified for a parameter, the parameter belongs to all parameter sets.

Nota

Per un cmdlet o una funzione, è previsto un limite di 32 set di parametri.For a cmdlet or function, there is a limit of 32 parameter sets.

Set di parametri predefinitiDefault parameter sets

Quando vengono definiti più set di parametri, è possibile usare la DefaultParameterSetName parola chiave dell'attributo cmdlet per specificare il set di parametri predefinito.When multiple parameter sets are defined, you can use the DefaultParameterSetName keyword of the Cmdlet attribute to specify the default parameter set. PowerShell usa il set di parametri predefinito se non è in grado di determinare il set di parametri da usare in base alle informazioni fornite dal comando.PowerShell uses the default parameter set if it can't determine the parameter set to use based on the information provided by the command. Per ulteriori informazioni sull'attributo cmdlet , vedere dichiarazione dell'attributo del cmdlet.For more information about the Cmdlet attribute, see Cmdlet Attribute Declaration.

Dichiarazione di set di parametriDeclaring parameter sets

Per creare un set di parametri, è necessario specificare la ParameterSetName parola chiave quando si dichiara l'attributo del parametro per ogni parametro nel set di parametri.To create a parameter set, you must specify the ParameterSetName keyword when you declare the Parameter attribute for every parameter in the parameter set. Per i parametri che appartengono a più set di parametri, aggiungere un attributo di parametro per ogni set di parametri.For parameters that belong to multiple parameter sets, add a Parameter attribute for each parameter set. Questo attributo consente di definire il parametro in modo diverso per ogni set di parametri.This attribute enables you to define the parameter differently for each parameter set. È ad esempio possibile definire un parametro come obbligatorio in un unico set e facoltativo in un altro.For example, you can define a parameter as mandatory in one set and optional in another. Tuttavia, ogni set di parametri deve contenere un parametro univoco.However, each parameter set must contain one unique parameter. Per altre informazioni, vedere dichiarazione dell'attributo Parameter.For more information, see Parameter Attribute Declaration.

Nell'esempio seguente il parametro username è il parametro Unique del Test01 set di parametri e il parametro ComputerName è il parametro Unique del Test02 set di parametri.In the following example, the UserName parameter is the unique parameter of the Test01 parameter set, and the ComputerName parameter is the unique parameter of the Test02 parameter set. Il parametro SharedParam appartiene a entrambi i set ed è obbligatorio per il Test01 set di parametri, ma facoltativo per il Test02 set di parametri.The SharedParam parameter belongs to both sets and is mandatory for the Test01 parameter set but optional for the Test02 parameter set.

[Parameter(Position = 0, Mandatory = true, ParameterSetName = "Test01")]
public string UserName
{
  get { return userName; }
  set { userName = value; }
}
private string userName;

[Parameter(Position = 0, Mandatory = true, ParameterSetName = "Test02")]
public string ComputerName
{
  get { return computerName; }
  set { computerName = value; }
}
private string computerName;

[Parameter(Mandatory= true, ParameterSetName = "Test01")]
[Parameter(ParameterSetName = "Test02")]
public string SharedParam
{
    get { return sharedParam; }
    set { sharedParam = value; }
}
private string sharedParam;