13

这似乎是 PowerShell 和 Visual Studio 中的常见问题,但案例和解决方案似乎差异很大。尽管看到了几个类似的问题,但我还没有为我的问题找到可行的解决方案。

错误信息中存在问题

无法加载文件或程序集 'file:///C:\users\jenstmar\Desktop\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(x86) 中。我以本地管理员身份在 Windows Enterprise 64 位环境中运行 PowerShell V3.0。我该如何解决这个问题?

4

5 回答 5

16

该文件可能因其来源(存储在NTFS 流中)而被阻止加载。检查属性,看看小解锁按钮是否亮起。一旦您取消阻止它,它可能会加载...

于 2012-12-10T16:11:51.813 回答
9

这种情况下的解决方案:删除并重新下载。我什至在第一个文件上解锁了它,没有任何帮助。很高兴这是在内部机器上。

于 2012-12-13T09:18:40.290 回答
4

以下对我有用(来自 Stack Overflow 问题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>
于 2014-01-20T22:41:11.737 回答
2
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(x86))下运行 Windows PowerShell ISE 的问题。您必须运行应用程序Windows PowerShell ISE

此应用程序 (Windows PowerShell ISE) 处于 64 位模式。当我执行 power shell 命令时,它对我来说工作正常。

我一直在尝试用不同类型的解决方案来解决这个问题,但它对我不起作用。如果您运行它 32 模式,请将其切换到 64 位并尝试。

于 2016-10-25T09:46:42.540 回答
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>而不是 [SRA]::LoadFrom(...)。

于 2012-12-10T16:34:44.290 回答