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

[玩转系统] 提供程序 cmdlet 动态参数

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

提供程序 cmdlet 动态参数


提供程序可以定义当用户为 cmdlet 的静态参数之一指定特定值时添加到提供程序 cmdlet 的动态参数。例如,提供程序可以根据用户在调用 Get-ItemSet-Item 提供程序 cmdlet 时指定的路径添加不同的动态参数。

动态参数方法

动态参数是通过实现动态参数方法之一来定义的,例如 System.Management.Automation.Provider.ItemCmdletProvider.GetItemDynamicParameters* 和 System.Management.Automation.Provider.SetItemDynamicParameters.SetItemDynamicParameters* 方法。这些方法返回一个具有公共属性的对象,这些属性用类似于独立 cmdlet 的属性进行修饰。以下是从证书提供程序获取的 System.Management.Automation.Provider.ItemCmdletProvider.GetItemDynamicParameters* 方法的实现示例:

protected override object GetItemDynamicParameters(string path)
{
    return new CertificateProviderDynamicParameters();
}

与提供程序 cmdlet 的静态参数不同,您可以按照在独立 cmdlet 中定义参数的相同方式指定这些参数的特征。以下是取自证书提供者的动态参数类的示例:

internal sealed class CertificateProviderDynamicParameters
{
  /// <summary>
  /// Dynamic parameter the controls whether we only return
  /// code signing certs.
  /// </summary>
  [Parameter()]
  public SwitchParameter CodeSigningCert
  {
    get
    {
      {
        return codeSigningCert;
      }
    }

    set
    {
      {
        codeSigningCert = value;
      }
    }
  }

    private SwitchParameter codeSigningCert = new SwitchParameter();
}

动态参数

以下是可用于添加动态参数的静态参数列表。

  • Clear-Content cmdlet - 您可以通过实现 System.Management.Automation.Provider.IContentCmdletProvider 来定义由 Clear-Clear cmdlet 的 Path 参数触发的动态参数。 ClearContentDynamicParameters* 方法。

  • Clear-Item cmdlet - 您可以通过实现 System.Management 来定义由 Clear-Item cmdlet 的 Path 参数触发的动态参数.Automation.Provider.ItemCmdletProvider.ClearItemDynamicParameters* 方法。

  • Clear-ItemProperty cmdlet - 您可以通过实现 System.Management 来定义由 Clear-ItemProperty cmdlet 的 Path 参数触发的动态参数.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* 方法。

  • Copy-Item cmdlet - 您可以定义由 PathDestinationRecurse 参数触发的动态参数通过实现 System.Management.Automation.Provider.ContainerCmdletProvider.CopyItemDynamicParameters* 方法来创建 Copy-Item cmdlet。

  • Get-ChildItem cmdlet - 您可以定义由 Get-ChildItemPath 和 Recurse 参数触发的动态参数code> cmdlet,通过实现 System.Management.Automation.Provider.ContainerCmdletProvider.GetChildItemsDynamicParameters* 和 System.Management.Automation.Provider.ContainerCmdletProvider.GetChildNamesDynamicParameters* 方法。

  • Get-Content cmdlet - 您可以通过实现 System.Management 来定义由 Get-Content cmdlet 的 Path 参数触发的动态参数.Automation.Provider.IContentCmdletProvider.GetContentReaderDynamicParameters* 方法。

  • Get-Item cmdlet - 您可以通过实现 System.Management 来定义由 Get-Item cmdlet 的 Path 参数触发的动态参数.Automation.Provider.ItemCmdletProvider.GetItemDynamicParameters* 方法。

  • Get-ItemProperty cmdlet - 您可以定义由 Get-ItemPropertyPath 和 Name 参数触发的动态参数code> cmdlet,通过实现 System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* 方法。

  • Invoke-Item cmdlet - 您可以通过实现 System.Management 来定义由 Invoke-Item cmdlet 的 Path 参数触发的动态参数.Automation.Provider.ItemCmdletProvider.InvokeDefaultActionDynamicParameters* 方法。

  • Move-Item cmdlet - 您可以定义由 Move-ItemPath 和 Destination 参数触发的动态参数code> cmdlet,通过实现 System.Management.Automation.Provider.NavigationCmdletProvider.MoveItemDynamicParameters* 方法。

  • New-Item cmdlet - 您可以定义由 PathItemTypeValue 参数触发的动态参数通过实现 System.Management.Automation.Provider.ContainerCmdletProvider.NewItemDynamicParameters* 方法来创建 New-Item cmdlet。

  • New-ItemProperty cmdlet - 您可以定义由 PathNamePropertyTypePropertyType 触发的动态参数通过实现 System.Management.Automation.Provider.IDynamicPropertyCmdletProvider.NewPropertyDynamicParameters* 方法的 New-ItemProperty cmdlet 的 Value 参数。

  • New-PSDrive cmdlet - 您可以通过实现 System.Management 来定义由 New-PSDrive cmdlet 返回的 System.Management.Automation.PSDriveInfo 对象触发的动态参数.Automation.Provider.DriveCmdletProvider.NewDriveDynamicParameters* 方法。

  • Remove-Item cmdlet - 您可以定义由 Remove-ItemPath 和 Recurse 参数触发的动态参数code> cmdlet,通过实现 System.Management.Automation.Provider.Containercmdletprovider.Removeitemdynamicparameters* 方法。

  • Remove-ItemProperty cmdlet - 您可以定义由 Remove-ItemPropertyPath 和 Name 参数触发的动态参数code> cmdlet,通过实现 System.Management.Automation.Provider.IDynamicPropertyCmdletProvider.RemovePropertyDynamicParameters* 方法。

  • Rename-Item cmdlet - 您可以定义由 Rename-ItemPath 和 NewName 参数触发的动态参数code> cmdlet,通过实现 System.Management.Automation.Provider.Containercmdletprovider.Renameitemdynamicparameters* 方法。

  • Rename-ItemProperty - 您可以定义由 PathNameNewName 参数触发的动态参数通过实现 System.Management.Automation.Provider.IDynamicPropertyCmdletProvider.RenamePropertyDynamicParameters* 方法来创建 Rename-ItemProperty cmdlet。

  • Set-Content cmdlet - 您可以通过实现 System.Management 来定义由 Set-Content cmdlet 的 Path 参数触发的动态参数.Automation.Provider.IContentCmdletProvider.GetContentWriterDynamicParameters* 方法。

  • Set-Item cmdlet - 您可以定义由 Set-ItemPath 和 Value 参数触发的动态参数code> cmdlet,通过实现 System.Management.Automation.Provider.ItemCmdletProvider.SetItemDynamicParameters* 方法。

  • Set-ItemProperty cmdlet - 您可以定义由 Set-ItemPath 和 Value 参数触发的动态参数code> cmdlet,通过实现 System.Management.Automation.Provider.IPropertyCmdletProvider.SetPropertyDynamicParameters* 方法。

  • Test-Path cmdlet - 您可以通过实现 System.Management 来定义由 Test-Path cmdlet 的 Path 参数触发的动态参数.Automation.Provider.ItemCmdletProvider.InvokeDefaultActionDynamicParameters* 方法。

参见

编写 Windows PowerShell 提供程序

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

取消回复欢迎 发表评论:

关灯