Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
I cmdlet possono definire parametri disponibili per l'utente in condizioni speciali, ad esempio quando l'argomento di un altro parametro è un valore specifico. Questi parametri vengono aggiunti in fase di esecuzione e vengono definiti parametri dinamici perché vengono aggiunti solo quando necessario. Ad esempio, è possibile progettare un cmdlet che aggiunge diversi parametri solo quando viene specificato un parametro switch specifico.
Nota
I provider e le funzioni di PowerShell possono anche definire parametri dinamici.
Parametri dinamici nei cmdlet di PowerShell
PowerShell usa parametri dinamici in diversi cmdlet del provider. Ad esempio, i cmdlet Get-Item
e Get-ChildItem
aggiungono un parametro CodeSigningCert in fase di esecuzione quando il parametro Path specifica il percorso del provider certificato. Se il parametro Percorso specifica un percorso per un provider diverso, il parametro CodeSigningCert non è disponibile.
Negli esempi seguenti viene illustrato come il parametro CodeSigningCert viene aggiunto in fase di esecuzione quando viene eseguito Get-Item
.
In questo esempio il runtime di PowerShell ha aggiunto il parametro e il cmdlet ha avuto esito positivo.
Get-Item -Path Cert:\CurrentUser -CodeSigningCert
Location : CurrentUser
StoreNames : {SmartCardRoot, UserDS, AuthRoot, CA...}
In questo esempio viene specificata un'unità filesystem e viene restituito un errore. Il messaggio di errore indica che non è possibile trovare il parametro CodeSigningCert.
Get-Item -Path C:\ -CodeSigningCert
Get-Item : A parameter cannot be found that matches parameter name 'CodeSigningCert'.
At line:1 char:37
+ Get-Item -Path C:\ -CodeSigningCert <<<<
--------
CategoryInfo : InvalidArgument: (:) [Get-Item], ParameterBindingException
FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetItemCommand
Supporto per i parametri dinamici
Per supportare i parametri dinamici, è necessario includere gli elementi seguenti nel codice del cmdlet.
Interfaccia
System.Management.Automation.IDynamicParameters. Questa interfaccia fornisce il metodo che recupera i parametri dinamici.
Per esempio:
public class SendGreetingCommand : Cmdlet, IDynamicParameters
Metodo
System.Management.Automation.IDynamicParameters.GetDynamicParameters. Questo metodo recupera l'oggetto che contiene le definizioni dei parametri dinamici.
Per esempio:
public object GetDynamicParameters()
{
if (employee)
{
context= new SendGreetingCommandDynamicParameters();
return context;
}
return null;
}
private SendGreetingCommandDynamicParameters context;
Classe
Classe che definisce i parametri dinamici da aggiungere. Questa classe deve includere un attributo Parameter per ogni parametro e qualsiasi alias facoltativo e attributi di convalida necessari per il cmdlet.
Per esempio:
public class SendGreetingCommandDynamicParameters
{
[Parameter]
[ValidateSet ("Marketing", "Sales", "Development")]
public string Department
{
get { return department; }
set { department = value; }
}
private string department;
}
Per un esempio completo di un cmdlet che supporta i parametri dinamici, vedere Come dichiarare parametri dinamici.