Dynamiska cmdlet-parametrar
Cmdlets kan definiera parametrar som är tillgängliga för användaren under särskilda villkor, 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.
Anteckning
Leverantörer och PowerShell-funktioner kan också definiera dynamiska parametrar.
Dynamiska parametrar i PowerShell-cmdlets
PowerShell använder dynamiska parametrar i flera av sina provider-cmdlets. Cmdletarna och lägger till exempel till en Get-Item
Get-ChildItem
CodeSigningCert-parameter vid körning när parametern Path anger sökvägen för certifikatprovidern. 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 Get-Item
när körs.
I det här exemplet har PowerShell-körningen lagt till parametern och cmdleten har lyckats.
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 ingå i cmdlet-koden.
Gränssnitt
System.Management.Automation.IDynamicParameters. Det här gränssnittet tillhandahåller metoden som hämtar de dynamiska parametrarna.
Exempel:
public class SendGreetingCommand : Cmdlet, IDynamicParameters
Metod
System.Management.Automation.IDynamicParameters.GetDynamicParameters. Den här metoden hämtar objektet som innehåller de dynamiska parameterdefinitionerna.
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 parameterattribut för varje parameter och eventuella valfria alias- och valideringsattribut som krävs av cmdleten.
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.
Se även
System.Management.Automation.IDynamicParameters
System.Management.Automation.IDynamicParameters.GetDynamicParameters
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för