2012-12-10 222 views
7

這似乎是PowerShell和Visual Studio中的常見問題,但案例和解決方案似乎差異很大。雖然看到幾個類似的問題,但我還沒有找到適合我的問題的工作解決方案。PowerShell運行時異常 - 「無法加載文件或程序集」

的問題存在於錯誤消息

無法加載文件或組件 '文件:/// C:\用戶\ jenstmar \桌面\ WinSCP.dll' O - [R其 的一個依賴。操作不受支持。 (從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

原來我的虛擬機的用戶目錄是共享驅動器。我必須先將文件下載到本地PC,然後取出鎖。 – Nico

+0

一旦文件被解鎖,關閉並再次打開PowerShell,否則它將無法正常工作。 – rom

0

我會看ILDASM或dotPeek中的WinSCP.dll依賴項,然後在加載WinSCP.dll之前加載這些依賴項。問題在於你正在PowerShell.exe(或powershell_ise.exe)融合加載上下文中運行,並且在這兩個exe的基礎目錄下找不到WinSCP.dll的程序集。因此,您需要在CLR加載程序扼流器之前加載相關程序集,因爲它無法找到所需的DLL。如果您需要幫助確定找不到哪個程序集,請查看fuslogvw.exe工具。

順便說一下,從PowerShell v2開始,您應該使用Add-Type -Path <path>而不是[S.R.A] :: LoadFrom(...)。

3

以下爲我工作(從堆棧溢出問題Add-Type load assembly from network UNC share error 0x80131515)。

在文件:

C:\ WINDOWS \ SYSTEM32 \ WindowsPowerShell \ V1.0 \ powershell.exe.config C:\ WINDOWS \ Syswow64資料\ WindowsPowerShell \ V1.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 

如果你看到上面的錯誤,它可能是運行在Windows PowerShell ISE在32位模式(的Windows PowerShell ISE(86))的問題。您必須運行應用程序Windows PowerShell ISE

此應用程序(Windows PowerShell ISE)處於64位模式。當我執行power shell命令時,它對我來說工作得很好。

我一直在嘗試用不同類型的解決方案解決這個問題,但它不適用於我。如果你運行32位模式,將它切換到64位並嘗試。

相關問題