2

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.

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

4

2 回答 2

2

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

模块清单在此处详细描述。

至于为什么一个有效而另一个无效:很难说。已经在 GAC 中的程序集不需要专门加载,也许是这样?

于 2015-07-29T16:32:07.170 回答
1

您的 powershell 模块应该有一个列出依赖项的清单

链接页面中的重要行是:

# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()
于 2015-07-29T16:33:07.760 回答