2016-01-07 1 views
0

У нас есть устаревший PowerShell PsSnapin (C#). Я хочу избежать использования InstallUtil. Следующие импортирует модуль с PSSnapIn командлетов экспортируемой:Использовать импорт-модуль с помощью PowerShell PSSnapin Dll

import-module .\MySnapin.dll 

Однако, когда я запустить модуль командлетов, они не из-за не в состоянии найти ссылки узлов (в частности, Enterprise Library DLL).

Есть ли опрятный способ заставить это работать?

(Библиотека DLL PsSnapin и все упомянутые узлы находятся в одной и той же директории сборки, и, когда я использую InstallUtil, зависимости все решены правильно)

ответ

0

Оснастки немного отличаются от модулей. Сначала нужно зарегистрировать оснастку, используя InstallUtil.exe:

PS> $InstallUtil = Join-Path $([System.Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory()) "InstallUtil.exe" 
PS> & $InstallUtil "C:\Path\to\MySnapin.dll" 

После регистрации сборки оснастки, вы можете загрузить его в Powershell сессию с Add-PSSnapin:

PS> Add-PSSnapIn MySnapin 
+0

действительно - это то, что мы обычно делаем , но я явно пытался избежать InstallUtil. Например. поэтому я могу загрузить две версии одной и той же оснастки и т. д. – Rob

+0

Ах, я вижу. Я не знаю, является ли это жизнеспособным, но: переименуйте одну версию, перекомпилируйте, зарегистрируйте оба, переместитесь между ними с помощью 'Add/Remove-PSSnapIn', возможно? –

Смежные вопросы