使用Powershell cmdlet dll中的函数



是否可以将实现PowerShell cmdlet的DLL添加到C#项目中,并像通常对类一样调用其函数?问题是 cmdlet 没有合适的函数来调用。它有invoke和其他东西。

据我了解,另一种方法是使用System.Management.Automation命名空间。但是如果我连续运行 7000 次函数,恐怕会导致性能开销。

确切地说,我有一个像 Remove-NAVApplicationObjectLanguage for MS Dynamics Nav 这样的 comdlet,可以处理文件和 7000 个要处理的文件。我想将其包装到库中,并以方便的方式使用我的附加处理来调用它。

Microsoft提供了一篇博客文章Coffee Break: Using PowerShell Runner Add-In如何从Dynamics NAV中运行他们的Dynamics NAV PowerShell Cmdlets。

如果你喜欢在C#中使用它,你可以使用相同的Microsoft.Dynamics.Nav.PowerShellRunner.dll。它位于服务层 C:\Program Files\Microsoft Dynamics NAV\100\Service\Add-ins\PowerShellRunner 的外接程序文件夹中。

C# 示例:

PowerShellRunner PowerShellRunner = PowerShellRunner.CreateInSandbox();
PowerShellRunner.WriteEventOnError = true;
PowerShellRunner.ImportModule(@"C:Program Files(x86)Microsoft Dynamics NAV100RoleTailored ClientMicrosoft.Dynamics.Nav.Apps.Tools.dll");
PowerShellRunner.AddCommand("Remove-NAVApplicationObjectLanguage");
string[] sources = new string[] { "TAB9.TXT", "TAB14.TXT" };
PowerShellRunner.AddParameter("Source", sources);
PowerShellRunner.AddParameter("Destination", @".RESULT");
PowerShellRunner.WriteEventOnError = true;
PowerShellRunner.BeginInvoke();

最新更新