如何在C#Powershell模块中运行启动代码

时间:2018-08-01 02:45:03

标签: c# powershell cmdlets

我已经在c#中创建了一个简单的PowerShell模块,该模块实现了一些cmdlet,并且我希望能够在导入模块时运行代码。

从google到命名空间中四处浏览,似乎没有合适的方法。

到目前为止,我想出的解决方法是创建一个psm1或ps1文件,该文件在加载模块并运行启动动作时运行(而不是使用它,因为在某些将运行脚本的环境中,脚本被阻止了)上)。

其他选项是我可以通过创建一个CmdletProvider来做到这一点,但是它在使用new-psdrive时会在提供程序列表中创建一个垃圾条目。

[CmdletProvider("junkprovider", ProviderCapabilities.None)]
public class Startup : CmdletProvider
{
    Public Startup()
    {
      // Startup code here
    }
}

有没有办法正确地做到这一点,或者我将不得不使用黑客工具?

1 个答案:

答案 0 :(得分:4)

您可以实现Why don't compilers merge redundant std::atomic writes?接口。

volatile atomic

将程序集作为模块导入时,using System.Management.Automation; namespace MyModule { public class MyModuleAssemblyInitializer : IModuleAssemblyInitializer { public void OnImport() { // Initialization code here. } } } 命令将调用Import-Module