2012-12-10 4 views
7

이것은 PowerShell 및 Visual Studio의 일반적인 문제인 것처럼 보입니다. 그러나 경우와 솔루션이 많이 달라질 수 있습니다. 비슷한 질문을 여러 번했지만, 아직 내 문제에 대한 해결책을 찾지 못했습니다.PowerShell 런타임 예외 - "파일 또는 어셈블리를로드 할 수 없습니다."

문제는 파일 또는 어셈블리를로드 할 수 없습니다 오류 메시지

에 존재 '파일 : /// C : \ 사용자 \ jenstmar \ 바탕 화면 \ WinSCP.dll'오 연구의 종속성 중 하나. 작업이 지원되지 않습니다. (HRESULT에서 예외 : 0x80131515)는 .DLL가 WinSCP 설치와 같은 폴더에 위치 할 예정대로

파일 위치, 유효하지 않습니다. 이 위치는 권리 나 부족이 없음을 확인하기 위해 변경되었으며, 사용을 제한했습니다. 문제를 일으키는

스크립트 라인은 다음과 같습니다

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

이 오류는 모두 PowerShell ISE 및 PS ISE (86)에 제공됩니다. Windows Enterprise 64 비트 환경에서 PowerShell V3.0을 로컬 관리자로 실행합니다. 이 문제를 어떻게 해결할 수 있습니까?

답변

4

이 경우 솔루션 : 모두 제거하고 다시 다운로드하십시오. 심지어 도움없이 첫 번째 파일에서 차단을 해제했습니다. 이것이 내부 기계에 있었기 때문에 좋았습니다.

+1

누가 해결책이 될지 생각했습니다. :) 나는 지금 약 6 시간 동안 노력하고 있었다. 감사합니다. Mark Jenster –

+4

PowerShell ISE가 차단 해제 될 때 열렸다면 닫고 다시 엽니 다. 차단 해제 작업이 지연되는 특정 시나리오에서 DLL을 잠그는 것 같습니다. – tresf

10

파일의 출처 (NTFS streams에 저장 됨)로 인해 파일이로드되지 않을 수 있습니다. 속성을 확인하고 작은 차단 해제 버튼이 켜져 있는지 확인하십시오. 일단 블록을 해제하면 아마도로드 될 것입니다 ...

+0

http://winscp.net/eng/docs/message_net_operation_not_supported –

+0

내 VM의 사용자 디렉토리가 공유 드라이브에 있음을 알 수 있습니다. 먼저 로컬 PC에 파일을 다운로드 한 다음 잠금 장치를 제거해야했습니다. – Nico

+0

파일이 차단 해제되면 닫고 PowerShell을 다시 엽니 다. 그렇지 않으면 작동하지 않습니다. – rom

0

WinSCP.dll을로드하기 전에 ILDASM 또는 dotPeek에서 WinSCP.dll 종속성을보고로드 할 것입니다. 문제는 PowerShell.exe (또는 powershell_ise.exe) 융합로드 컨텍스트 및이 두 exe의 기본 디렉터리에서 WinSCP.dll이 발견되지 않을 어셈블리를 실행하고 있다는 것입니다. 따라서 필요한 DLL을 찾을 수 없기 때문에 CLR 로더가 중단되기 전에 종속 어셈블리를로드해야합니다. 어떤 어셈블리를 찾을 수 없는지 알아 내려면 fuslogvw.exe 도구를 확인하십시오.

현재 PowerShell v2의 경우 [S.R.A] :: LoadFrom (...) 대신 Add-Type -Path <path>을 사용해야합니다.

3

다음은 나를 위해 일했습니다 (스택 오버플로 질문 Add-Type load assembly from network UNC share error 0x80131515). 파일에서

:

C : \ WINDOWS \ SYSTEM32 \의 WindowsPowerShell \ V1.0의 \의 powershell.exe.config의 C : \ WINDOWS \ SysWOW64와 \의 WindowsPowerShell 버전 1.0 \의 powershell.exe.config \

위의 오류가 표시되면
<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <runtime> 
     <loadFromRemoteSources enabled="true"/> 
    </runtime> 
</configuration> 
1
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 

, 그것은 32 비트 모드에서의 Windows PowerShell ISE (Windows PowerShell을 ISE (86))를 실행하는 문제가 될 수 있습니다. 응용 프로그램을 실행해야합니다. Windows PowerShell ISE.

이 응용 프로그램 (Windows PowerShell ISE)은 64 비트 모드입니다. 파워 셸 명령을 실행했을 때 나를 위해 잘 작동합니다.

다른 유형의 솔루션으로이 문제를 해결하려고했지만 그게 효과가 없습니다. 32 모드를 실행하는 경우 64 비트로 전환하고 시도하십시오.