我用 C# 开发了一个 powershell 模块,实现了一些命令。
当 Powershell 导入此模块时,如何在此模块中执行 C# 代码?
创建一个模块清单,将 ModuleToProcess(或 V3 中的 RootModule)字段设置为 PSM1 文件,并将 NestedModules 设置为 DLL,例如:
RootModule = 'Pscx.psm1'
NestedModules = 'Pscx.dll'
这就是我们在PowerShell 社区扩展中所做的事情,我们在其中做同样的事情 - 首先启动一个脚本。您可以在此处查看我们的 PSD1 文件。
这是一个非常基本的解决方案,只需将 {} 中的代码替换为您的源代码即可。(下面是我的测试)
add-type 'public class c{public const string s="Hello World";}';[c]::s
请享用
我还在.NET 中编写二进制 cmdLet。我发现如果您创建一个至少从 DriveCmdletProvider 继承的类,该类可以实现 InitializeDefaultDrives。
当在您的 DLL 上调用 import-module 时,将调用此方法。
您可以使用此“功能”来建立一些会话(或模块会话)数据。