我正在编写一个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的方法。
答案 0 :(得分:0)
如果您延长PSCmdlet
而不是Cmdlet
,则可以通过InvokeProvider
媒体资源from the docs访问当前提供商:
如果您的Cmdlet需要访问MSH运行时(例如, 会话状态中的变量,对主机的访问或信息 关于当前的Cmdlet提供程序,然后你应该派生 来自PSCmdlet基类。
您可以通过以下方式调用Get-ChildItem
提供程序cmdlet:
InvokeProvider.ChildItem.Get(@"C:\path\to\dir", false);