C#Cmdlet调用GetChildItem

时间:2018-02-15 14:59:06

标签: c# powershell cmdlets

我正在编写一个c#cmdlet,我需要使用Get-ChildItems PowerShell cmdlet。 倪

如何在不调用“字符串PowerShell命令”的情况下从我的代码中调用此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的方法。

1 个答案:

答案 0 :(得分:0)

如果您延长PSCmdlet而不是Cmdlet,则可以通过InvokeProvider媒体资源from the docs访问当前提供商:

  

如果您的Cmdlet需要访问MSH运行时(例如,   会话状态中的变量,对主机的访问或信息   关于当前的Cmdlet提供程序,然后你应该派生   来自PSCmdlet基类。

您可以通过以下方式调用Get-ChildItem提供程序cmdlet:

InvokeProvider.ChildItem.Get(@"C:\path\to\dir", false);