Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在c powershell模块中运行启动代码_C#_Powershell_Cmdlets - Fatal编程技术网

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

C# 如何在c powershell模块中运行启动代码,c#,powershell,cmdlets,C#,Powershell,Cmdlets,我已经用c创建了一个简单的PowerShell模块,它实现了一些cmdlet,我希望能够在导入模块时运行代码 从谷歌和名称空间的角度来看,似乎没有一个合适的方法来做到这一点 到目前为止,我提出的解决方法是创建一个psm1或ps1文件,该文件在加载模块时运行,并且启动操作不希望使用该文件,因为脚本在某些环境中被阻止,这将在这些环境中运行 另一个选择是,我已经能够通过创建一个CmdletProvider来做到这一点,它可以工作,但在使用新的psdrive时,它会在提供程序列表中创建一个垃圾条目 [C

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

从谷歌和名称空间的角度来看,似乎没有一个合适的方法来做到这一点

到目前为止,我提出的解决方法是创建一个psm1或ps1文件,该文件在加载模块时运行,并且启动操作不希望使用该文件,因为脚本在某些环境中被阻止,这将在这些环境中运行

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

[CmdletProvider("junkprovider", ProviderCapabilities.None)]
public class Startup : CmdletProvider
{
    Public Startup()
    {
      // Startup code here
    }
}
有没有一种方法可以正确地执行此操作,或者我将不得不使用hacks?

您可以实现该接口

using System.Management.Automation;

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

您可以实现该接口

using System.Management.Automation;

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

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

Perfect这正是我想要的。谢谢你,这正是我想要的。谢谢你