在Import-Module期间添加类型

时间:2015-07-29 13:33:23

标签: vb.net powershell powershell-module

导入模块时,PowerShell中是否存在Add-Type

我有一个自定义VB DLL,我将其作为模块导入。 DLL中有2个导入:

Imports Microsoft.ConfigurationManagement.ManagementProvider
Imports Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

依赖于WqlQueryEngine的功能在我执行之前不起作用:

Add-Type "C:\Program Files (x86)\Configuration Manager\Console\bin\AdminUI.WqlQueryEngine.dll"

在导入过程中是否有这样做?或者更改PowerShell寻找程序集的位置?

为什么我必须这样做? 导入所依赖的文件是否在同一目录中? 第一次导入依赖于C:\Program Files (x86)\Configuration Manager\Console\bin\Microsoft.ConfigurationManagement.ManagementProvider.dll

为什么一个工作而另一个需要添加?

2 个答案:

答案 0 :(得分:2)

如果您正在为模块使用模块清单(.psd1)文件(并且应该),则可以指定所需程序集的列表(RequiredAssemblies = @())。这将导致PowerShell在您自己的模块加载VB DLL之前加载它们。

详细描述了模块清单here

至于为什么一个有效,另一个无效:很难说。已经在GAC中的程序集不需要专门加载,可能就是这种情况?

答案 1 :(得分:1)

您的powershell模块应该有manifest列出依赖项。

链接页面的重要行是:

# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()