当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Cmdlet 动态参数

作者:精品下载站 日期:2024-12-14 02:53:41 浏览:14 分类:玩电脑

Cmdlet 动态参数


Cmdlet 可以定义用户在特殊条件下可用的参数,例如当另一个参数的参数是特定值时。这些参数在运行时添加,并称为动态参数,因为它们仅在需要时添加。例如,您可以设计一个仅在指定特定开关参数时添加多个参数的 cmdlet。

笔记

提供程序和 PowerShell 函数还可以定义动态参数。

PowerShell cmdlet 中的动态参数

PowerShell 在其多个提供程序 cmdlet 中使用动态参数。例如,当 Path 参数添加时,Get-ItemGet-ChildItem cmdlet 在运行时添加 CodeSigningCert 参数指定证书提供商路径。如果 Path 参数指定不同提供商的路径,则 CodeSigningCert 参数不可用。

以下示例显示了在运行 Get-Item 时如何在运行时添加 CodeSigningCert 参数。

在此示例中,PowerShell 运行时已添加参数并且 cmdlet 成功。

Get-Item -Path cert:\CurrentUser -CodeSigningCert
Location   : CurrentUser
StoreNames : {SmartCardRoot, UserDS, AuthRoot, CA...}

在此示例中,指定了文件系统驱动器并返回错误。该错误消息表明找不到 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

支持动态参数

为了支持动态参数,cmdlet 代码中必须包含以下元素。

界面

系统.管理.自动化.IDynamicParameters。该接口提供了检索动态参数的方法。

例如:

public class SendGreetingCommand : Cmdlet, IDynamicParameters

方法

System.Management.Automation.IDynamicParameters.GetDynamicParameters。此方法检索包含动态参数定义的对象。

例如:

 public object GetDynamicParameters()
 {
   if (employee)
   {
     context= new SendGreetingCommandDynamicParameters();
     return context;
   }
   return null;
}
private SendGreetingCommandDynamicParameters context;

班级

定义要添加的动态参数的类。此类必须包含每个参数的 Parameter 属性以及 cmdlet 所需的任何可选 AliasValidation 属性。

例如:

public class SendGreetingCommandDynamicParameters
{
  [Parameter]
  [ValidateSet ("Marketing", "Sales", "Development")]
  public string Department
  {
    get { return department; }
    set { department = value; }
  }
  private string department;
}

有关支持动态参数的 cmdlet 的完整示例,请参阅如何声明动态参数。

参见

  • 系统.管理.自动化.IDynamicParameters
  • System.Management.Automation.IDynamicParameters.GetDynamicParameters
  • 如何声明动态参数
  • 编写 Windows PowerShell Cmdlet

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯