我已经在c#中创建了一个简单的PowerShell模块,该模块实现了一些cmdlet,并且我希望能够在导入模块时运行代码。
从google到命名空间中四处浏览,似乎没有合适的方法。
到目前为止,我想出的解决方法是创建一个psm1或ps1文件,该文件在加载模块并运行启动动作时运行(而不是使用它,因为在某些将运行脚本的环境中,脚本被阻止了)上)。
其他选项是我可以通过创建一个CmdletProvider来做到这一点,但是它在使用new-psdrive时会在提供程序列表中创建一个垃圾条目。
[CmdletProvider("junkprovider", ProviderCapabilities.None)]
public class Startup : CmdletProvider
{
Public Startup()
{
// Startup code here
}
}
有没有办法正确地做到这一点,或者我将不得不使用黑客工具?
答案 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
。