PowerShell runtime exception - " не удалось загрузить файл или сборку"

это, по-видимому, распространенная проблема в PowerShell и Visual Studio, но случаи и решения, похоже, сильно различаются. Хотя я видел несколько похожих вопросов, я еще не нашел рабочего решения для своей проблемы.

проблема существует в сообщении об ошибке

не удалось загрузить файл или сборку 'файл:///с:пользователиjenstmarрабочий столпомощью WinSCP.dll ' o r один из его зависимости. Операция не поддерживается. (Исключение из HRESULT: 0x80131515)

расположение файла недопустимо, как .dll должна находиться в той же папке, что и помощью WinSCP установки. Это место было изменено, чтобы проверить, что нет прав или их отсутствия, ограничения в использовании.

строка сценария, которая вызывает проблему, выглядит следующим образом:

# Load WinSCP .NET assembly
[Reflection.Assembly]::LoadFrom("C:usersjenstmarDesktopWinSCP.dll") | Out-Null

эта ошибка появляется в обоих PowerShell ISE и PS ISE (x86). Я запускаю PowerShell версии 3.0 в Windows корпоративная 64 бит среда как локальный администратор. Как я могу решить эту проблему?

5 ответов


файл может быть заблокирован из-за его происхождения (хранится в NTFS streams). Проверьте свойства и посмотрите, горит ли маленькая кнопка разблокировки. Как только вы разблокировать его возможно загрузить...


решение в этом случае: Удалите и загрузите все это снова. Я даже разблокировал его в первом файле, без помощи. Рад, что это было на внутренней машине.


следующее сработало для меня (из вопроса переполнения стека добавить тип загрузки сборки из сети UNC доля ошибка 0x80131515).

в файлы:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.исполняемый.config C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell - ... исполняемый.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <runtime>
      <loadFromRemoteSources enabled="true"/>
   </runtime>
</configuration>

Import-Module : Could not load file or assembly 'file:/// *dll path*' or one of 
its dependencies. An attempt was made to load a program with an incorrect format.
At *script path*.ps1:68 char:2
+     Import-Module *module path*
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Import-Module], BadImageFormatException
    + FullyQualifiedErrorId : System.BadImageFormatException,Microsoft.PowerShell.Commands.ImportModuleCommand

Если вы видите вышеуказанную ошибку, это может быть проблема запуска Windows PowerShell ISE в 32-битном режиме(Windows PowerShell ISE(x86)). Вы должны запустить приложение Windows PowerShell ISE.

Это приложение (Windows PowerShell ISE) находится в 64-битном режиме. Когда я выполнил команду power shell, она отлично работает для меня.

Я пытался исправить это с помощью решений разных типов, но это не сработало для меня. Если вы используете его 32 режим, переключите его на 64 бит и попробуйте.


Я бы посмотрел на WinSCP.зависимости dll в ILDASM или dotPeek, а затем загрузите эти зависимости перед загрузкой WinSCP.файл DLL. Проблема в том, что вы работаете в PowerShell.exe (или powershell_ise.exe) контекст загрузки слияния и сборки, которые WinSCP.dll не будут найдены под этими двумя базовыми dirs exe. Поэтому вам нужно будет загрузить зависимые сборки до дросселей загрузчика CLR, потому что он не может найти требуемую DLL. Если вам нужна помощь, выясните, какая сборка не может быть найдено, проверьте fuslogvw.инструмент exe.

кстати, начиная с PowerShell v2 вы должны использовать Add-Type -Path <path> вместо [Р. С.]::LoadFrom(...).