0

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

据我了解,另一种方法是使用System.Management.Automation命名空间。但是我担心如果我连续运行 7000 次这样的功能会导致性能开销。

确切地说,我有一个类似于Remove-NAVApplicationObjectLanguageMS Dynamics Nav 的 comdlet,用于处理文件和 7000 个要处理的文件。我想将它包装到库中,并以我方便的方式使用我的附加处理来调用它。

4

1 回答 1

2

Microsoft 提供了一篇博客文章Coffee Break:使用 PowerShell Runner 加载项如何从 Dynamics NAV 中运行其 Dynamics NAV PowerShell Cmdlet。

如果你喜欢在 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 NAV\100\RoleTailored Client\Microsoft.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();
于 2017-10-25T18:40:08.840 回答