Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Cmdletar kan definiera parametrar som är tillgängliga för användaren under särskilda förhållanden, till exempel när argumentet för en annan parameter är ett specifikt värde. Dessa parametrar läggs till vid körning och kallas dynamiska parametrar eftersom de bara läggs till när det behövs. Du kan till exempel utforma en cmdlet som bara lägger till flera parametrar när en specifik växelparameter har angetts.
Anmärkning
Providers och PowerShell-funktioner kan också definiera dynamiska parametrar.
Dynamiska parametrar i PowerShell-cmdletar
PowerShell använder dynamiska parametrar i flera av sina provider-cmdletar. Cmdletarna Get-Item och Get-ChildItem lägger till en CodeSigningCert- parameter vid körning när parametern Path anger Certifikat providersökväg. Om parametern Path anger en sökväg för en annan provider är parametern CodeSigningCert inte tillgänglig.
I följande exempel visas hur parametern CodeSigningCert läggs till vid körning när Get-Item körs.
I det här exemplet har PowerShell-körningen lagt till parametern och cmdleten lyckas.
Get-Item -Path Cert:\CurrentUser -CodeSigningCert
Location : CurrentUser
StoreNames : {SmartCardRoot, UserDS, AuthRoot, CA...}
I det här exemplet anges en FileSystem- enhet och ett fel returneras. Felmeddelandet anger att parametern CodeSigningCert inte kan hittas.
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
Stöd för dynamiska parametrar
För att stödja dynamiska parametrar måste följande element inkluderas i cmdlet-koden.
Gränssnitt
System.Management.Automation.IDynamicParameters. Det här gränssnittet innehåller den metod som hämtar de dynamiska parametrarna.
Till exempel:
public class SendGreetingCommand : Cmdlet, IDynamicParameters
Metod
System.Management.Automation.IDynamicParameters.GetDynamicParameters. Den här metoden hämtar objektet som innehåller definitionerna för dynamiska parametrar.
Till exempel:
public object GetDynamicParameters()
{
if (employee)
{
context= new SendGreetingCommandDynamicParameters();
return context;
}
return null;
}
private SendGreetingCommandDynamicParameters context;
Klass
En klass som definierar de dynamiska parametrar som ska läggas till. Den här klassen måste innehålla ett Parameter-attribut för varje parameter och valfria alias och validering attribut som krävs av cmdleten.
Till exempel:
public class SendGreetingCommandDynamicParameters
{
[Parameter]
[ValidateSet ("Marketing", "Sales", "Development")]
public string Department
{
get { return department; }
set { department = value; }
}
private string department;
}
Ett fullständigt exempel på en cmdlet som stöder dynamiska parametrar finns i Deklarera dynamiska parametrar.