繁体   English   中英

如何在ac#powershell模块中运行启动代码

[英]How to run startup code in a c# powershell module

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

通过环顾谷歌和命名空间,似乎没有做到这一点的正确方法。

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

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

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

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

您可以实现System.Management.Automation.IModuleAssemblyInitializer接口。

using System.Management.Automation;

namespace MyModule
{
    public class MyModuleAssemblyInitializer : IModuleAssemblyInitializer
    {
        public void OnImport()
        {
            // Initialization code here.
        }
    }
}

当程序集作为模块导入时, Import-Module命令将调用OnImport

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM