2012-12-10 127 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位并尝试。

相关问题