C# Cmdlet 调用 GetChildItem
C# Cmdlet call GetChildItem
我正在编写一个 c# cmdlet,我需要使用 Get-ChildItems PowerShell cmdlet。
妮
如何在不调用 "string PowerShell command" 的情况下从我的代码中调用此 cmdlet?基本上我尝试调用 c# GetChildItem 代码。
[Cmdlet(VerbsCommon.Get, "SampleCmdlet")]
public class GetSampleCmdlet : Cmdlet
{
[Parameter()]
public string Parameter1 { get; set; }
protected override void ProcessRecord()
{
//Call c# Get-ChildItem and do something with results
//Don't want to do somthing like:
//string stringCommand = "Get-ChildItem 'c:\*.Txt'";
//InvokePowerShellCommand(stringCommand);
}
}
我只需要 FileSystemProvider,但它应该是一种直接调用 GetChildItem cmdlet 的方法。
如果扩展 PSCmdlet
而不是 Cmdlet
,则可以通过 InvokeProvider
属性 - from the docs 访问当前提供程序:
If your Cmdlet requires access to the MSH Runtime (for example,
variables in the session state, access to the host, or information
about the current Cmdlet Providers,) then you should instead derive
from the PSCmdlet base class.
您可以通过以下方式调用 Get-ChildItem
提供程序 cmdlet:
InvokeProvider.ChildItem.Get(@"C:\path\to\dir", false);
我正在编写一个 c# cmdlet,我需要使用 Get-ChildItems PowerShell cmdlet。 妮
如何在不调用 "string PowerShell command" 的情况下从我的代码中调用此 cmdlet?基本上我尝试调用 c# GetChildItem 代码。
[Cmdlet(VerbsCommon.Get, "SampleCmdlet")]
public class GetSampleCmdlet : Cmdlet
{
[Parameter()]
public string Parameter1 { get; set; }
protected override void ProcessRecord()
{
//Call c# Get-ChildItem and do something with results
//Don't want to do somthing like:
//string stringCommand = "Get-ChildItem 'c:\*.Txt'";
//InvokePowerShellCommand(stringCommand);
}
}
我只需要 FileSystemProvider,但它应该是一种直接调用 GetChildItem cmdlet 的方法。
如果扩展 PSCmdlet
而不是 Cmdlet
,则可以通过 InvokeProvider
属性 - from the docs 访问当前提供程序:
If your Cmdlet requires access to the MSH Runtime (for example, variables in the session state, access to the host, or information about the current Cmdlet Providers,) then you should instead derive from the PSCmdlet base class.
您可以通过以下方式调用 Get-ChildItem
提供程序 cmdlet:
InvokeProvider.ChildItem.Get(@"C:\path\to\dir", false);