プロバイダーは、ユーザーがコマンドレットのいずれかの静的パラメーターに特定の値を指定したときに、プロバイダー コマンドレットに追加される動的パラメーターを定義できます。 たとえば、プロバイダーは、ユーザーが Get-Item または Set-Item プロバイダーコマンドレットを呼び出すときに指定するパスに基づいて、さまざまな動的パラメーターを追加できます。
動的パラメーター メソッド
動的パラメーターは、System.Management.Automation.Provider.ItemCmdletProvider.GetItemDynamicParameters*、system.Management.Automation.Provider.SetItemDynamicParameters.SetItemDynamicParameters* メソッド などの動的パラメーター メソッドのいずれかを実装することによって定義されます。 これらのメソッドは、スタンドアロン コマンドレットと同様の属性で修飾されたパブリック プロパティを持つオブジェクトを返します。 証明書プロバイダーから取得した System.Management.Automation.Provider.ItemCmdletProvider.GetItemDynamicParameters* メソッドの実装例を次に示します。
protected override object GetItemDynamicParameters(string path)
{
return new CertificateProviderDynamicParameters();
}
プロバイダー コマンドレットの静的パラメーターとは異なり、スタンドアロン コマンドレットでパラメーターを定義するのと同じ方法で、これらのパラメーターの特性を指定できます。 証明書プロバイダーから取得した動的パラメーター クラスの例を次に示します。
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コマンドレット - System.Management.Automation.Provider.IContentCmdletProvider.ClearContentDynamicParameters* メソッドを実装することで、Clear-Clear コマンドレットのPathパラメーターによってトリガーされる動的パラメーターを定義できます。Clear-Itemコマンドレット - System.Management.Automation.Provider.ItemCmdletProvider.ClearItemDynamicParameters* メソッドを実装することで、Clear-ItemコマンドレットのPathパラメーターによってトリガーされる動的パラメーターを定義できます。Clear-ItemPropertyコマンドレット - System.Management.Automation.Provider.IPropertyCmdletProvider.ClearPropertyDynamicParameters* メソッドを実装することで、Clear-ItemPropertyコマンドレットのPathパラメーターによってトリガーされる動的パラメーターを定義できます。Copy-Itemコマンドレット - System.Management.Automation.Provider.ContainerCmdletProvider.CopyItemDynamicParameters* メソッドを実装することで、Copy-ItemコマンドレットのPath、Destination、およびRecurseパラメーターによってトリガーされる動的パラメーターを定義できます。Get-ChildItemコマンドレット - System.Management.Automation.Provider.ContainerCmdletProvider.GetChildItemsDynamicParameters* および System.Management.Automation.Provider.ContainerCmdletProvider.GetChildNamesDynamicParameters* メソッドを実装することで、Get-ChildItemコマンドレットのPathパラメーターとRecurseパラメーターによってトリガーされる動的パラメーターを定義できます。Get-Contentコマンドレット - System.Management.Automation.Provider.IContentCmdletProvider.GetContentReaderDynamicParameters* メソッドを実装することで、Get-ContentコマンドレットのPathパラメーターによってトリガーされる動的パラメーターを定義できます。Get-Itemコマンドレット -Get-ItemコマンドレットのPathパラメーターによってトリガーされる動的パラメーターを定義するには、System.Management.Automation.Provider.ItemCmdletProvider.GetItemDynamicParameters* メソッドを実装します。Get-ItemPropertyコマンドレット - System.Management.Automation.Provider.IPropertyCmdletProvider.GetPropertyDynamicParameters* メソッドを実装することで、Get-ItemPropertyコマンドレットのPathパラメーターとNameパラメーターによってトリガーされる動的パラメーターを定義できます。Invoke-Itemコマンドレット - System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultActionDynamicParameters* メソッドを実装することで、Invoke-ItemコマンドレットのPathパラメーターによってトリガーされる動的パラメーターを定義できます。Move-Itemコマンドレット - System.Management.Automation.Provider.NavigationCmdletProvider.MoveItemDynamicParameters* メソッドを実装することで、Move-ItemコマンドレットのPathパラメーターとDestinationパラメーターによってトリガーされる動的パラメーターを定義できます。New-Itemコマンドレット - System.Management.Automation.Provider.ContainerCmdletProvider.NewItemDynamicParameters* メソッドを実装することで、New-ItemコマンドレットのPath、ItemType、およびValueパラメーターによってトリガーされる動的パラメーターを定義できます。New-ItemPropertyコマンドレット - System.Management.Automation.Provider.IDynamicPropertyCmdletProvider.NewPropertyDynamicParameters* メソッドを実装することで、New-ItemPropertyコマンドレットのPath、Name、PropertyType、およびValueパラメーターによってトリガーされる動的パラメーターを定義できます。New-PSDriveコマンドレット - System.Management.Automation.Provider.DriveCmdletProvider.NewDriveDynamicParameters* メソッドを実装することで、New-PSDriveコマンドレットによって返される System.Management.Automation.PSDriveInfo オブジェクトによってトリガーされる動的パラメーターを定義できます。Remove-Itemコマンドレット - System.Management.Automation.Provider.ContainerCmdletProvider.RemoveItemDynamicParameters* メソッドを実装することで、Remove-ItemコマンドレットのPathパラメーターとRecurseパラメーターによってトリガーされる動的パラメーターを定義できます。Remove-ItemPropertyコマンドレット - System.Management.Automation.Provider.IDynamicPropertyCmdletProvider.RemovePropertyDynamicParameters* メソッドを実装することで、Remove-ItemPropertyコマンドレットのPathパラメーターとNameパラメーターによってトリガーされる動的パラメーターを定義できます。Rename-Itemコマンドレット - System.Management.Automation.Provider.ContainerCmdletProvider.RenameItemDynamicParameters* メソッドを実装することで、Rename-ItemコマンドレットのPathパラメーターとNewNameパラメーターによってトリガーされる動的パラメーターを定義できます。Rename-ItemProperty- System.Management.Automation.Provider.IDynamicPropertyCmdletProvider.RenamePropertyDynamicParameters* メソッドを実装することで、Rename-ItemPropertyコマンドレットのPath、Name、およびNewNameパラメーターによってトリガーされる動的パラメーターを定義できます。Set-Contentコマンドレット - System.Management.Automation.Provider.IContentCmdletProvider.GetContentWriterDynamicParameters* メソッドを実装することで、Set-ContentコマンドレットのPathパラメーターによってトリガーされる動的パラメーターを定義できます。Set-Itemコマンドレット - System.Management.Automation.Provider.ItemCmdletProvider.SetItemDynamicParameters* メソッドを実装することで、Set-ItemコマンドレットのPathおよびValueパラメーターによってトリガーされる動的パラメーターを定義できます。Set-ItemPropertyコマンドレット - System.Management.Automation.Provider.IPropertyCmdletProvider.SetPropertyDynamicParameters* メソッドを実装することで、Set-ItemコマンドレットのPathパラメーターとValueパラメーターによってトリガーされる動的パラメーターを定義できます。Test-Pathコマンドレット - System.Management.Automation.Provider.ItemCmdletProvider.InvokeDefaultActionDynamicParameters* メソッドを実装することで、Test-PathコマンドレットのPathパラメーターによってトリガーされる動的パラメーターを定義できます。
こちらもご覧ください
Windows PowerShell プロバイダー の作成の
PowerShell