[英]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.