2015-07-29 4 views
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.

Почему одно работает, а другое необходимо добавить?

ответ

2

Если вы используете файл манифеста модуля (.psd1) для своего модуля (и вы должны), вы можете указать список необходимых сборок (RequiredAssemblies = @()). Это заставит PowerShell загружать их, прежде чем ваш собственный модуль загрузит VB DLL.

Подробные описания модулей описаны here.

Что касается того, почему один работает, а другой нет: это трудно сказать. Ассембли уже в GAC не нужно специально загружать, может быть, это так?

1

Ваш модуль powershell должен иметь manifest, в котором перечислены зависимости.

важные строки из Связанная страница:

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