2

我用 C# 开发了一个 powershell 模块,实现了一些命令。

当 Powershell 导入此模块时,如何在此模块中执行 C# 代码?

4

3 回答 3

6

创建一个模块清单,将 ModuleToProcess(或 V3 中的 RootModule)字段设置为 PSM1 文件,并将 NestedModules 设置为 DLL,例如:

RootModule         = 'Pscx.psm1'
NestedModules      = 'Pscx.dll' 

这就是我们在PowerShell 社区扩展中所做的事情,我们在其中做同样的事情 - 首先启动一个脚本。您可以在此处查看我们的 PSD1 文件。

于 2013-01-30T18:49:12.843 回答
0

这是一个非常基本的解决方案,只需将 {} 中的代码替换为您的源代码即可。(下面是我的测试)

add-type 'public class c{public const string s="Hello World";}';[c]::s

请享用

于 2013-01-30T18:28:08.820 回答
0

我还在.NET 中编写二进制 cmdLet。我发现如果您创建一个至少从 DriveCmdletProvider 继承的类,该类可以实现 InitializeDefaultDrives。

当在您的 DLL 上调用 import-module 时,将调用此方法。

您可以使用此“功能”来建立一些会话(或模块会话)数据。

于 2016-01-29T06:34:58.950 回答