在导入模块期间添加类型
Add type during Import-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
.
为什么一个有效而另一个需要添加?
如果您正在为您的模块使用模块清单 (.psd1) 文件(您应该这样做),您可以指定所需程序集的列表 (RequiredAssemblies = @()
)。这将导致 PowerShell 在您自己的模块加载 VB DLL 之前加载它们。
详细描述了模块清单here。
至于为什么一个有效而另一个无效:很难说。已经在 GAC 中的程序集不需要专门加载,也许是这样?
您的 powershell 模块应该有一个 manifest 列出依赖项。
链接页面中的重要行是:
# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()
在导入模块时,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
.
为什么一个有效而另一个需要添加?
如果您正在为您的模块使用模块清单 (.psd1) 文件(您应该这样做),您可以指定所需程序集的列表 (RequiredAssemblies = @()
)。这将导致 PowerShell 在您自己的模块加载 VB DLL 之前加载它们。
详细描述了模块清单here。
至于为什么一个有效而另一个无效:很难说。已经在 GAC 中的程序集不需要专门加载,也许是这样?
您的 powershell 模块应该有一个 manifest 列出依赖项。
链接页面中的重要行是:
# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()