У меня есть модуль PS - все работает нормально. Для нового скрипта, который является частью этого модуля, мне нужно загрузить DLL из Microsoft WindowsAPICodePack
Я добавил DLL в папку «Сборки» в модуле, который устанавливается в расположение по умолчанию ( C: \ Program Files \ WindowsPowershell \ Modules \ ModuleName).
Скрипт, который использует dll, отлично работает в тесте, когда dll находится во временной папке, например, 'c: \ temp', однако, когда я запускаю сценарий из модуля, используя путь к копии dll в модуле (C: \ Program Files \ WindowsPowershell \ Modules \ ModuleName \ Assemblies \ mydllname.dll), он не может загрузить файл DLL с "файлом not found ".
Я являюсь локальным администратором компьютера, поэтому у меня есть доступ к пути, и он также не работает, если я поднимаю Powershell перед его запуском.
Мне нужно загрузить dll из это местоположение без изменения прав доступа к папке, так как модуль предназначен для распространения среди многих пользователей через наш внутренний репозиторий. Любые идеи, как это может быть достигнуто?
Есть ли способ загрузить DLL в пользовательскую среду при загрузке модуля вместо этого? Это также может не сработать, хотя, как представляется, проблема с разрешениями при выполнении / загрузке DLL из пути модулей.
Полагаю, я мог бы запустить команду Set-Acl против библиотеки DLL в .psm1, но это кажется немного неуклюже и не знаю, будут ли у процесса установки модуля требуемые права?
Пример кода:
Try {
Add-Type -AssemblyName System.Windows.Forms
Add-Type -Path $DllPath
}
Catch {
$_
Pause
Break
}
Если
$DllPath = "C:\Program Files\WindowsPowerShell\Modules\module\dllname.dll"
Тогда произойдет сбой
Если
$DllPath = "C:\temp\dllname.dll"
, то это будет успешно
Tried
Добавлен dll к Required Assemblies
модуля в манифесте
Добавлено это для запуска скрипта
Using moduleName
Using namespace Microsoft.WindowsAPICodePack
Та же ошибка