web-dev-qa-db-ja.com

PowershellロードDLLでエラーが発生しました:Add-Type:ファイルまたはアセンブリ 'WebDriver.dll'またはその依存関係の1つをロードできませんでした。操作はサポートされていません

PowerShellSeleniumとともに使用して、Seleniumを http://www.Java2s.com/Code/Jar/s/Downloadseleniumremotedriver2350jar.htm からダウンロードしたい。 DLLの1つをロードしようとすると、エラーが発生しました。誰かが私を助けてくれることを願っています。

これは私のシステム情報です。

OS Name:                   Microsoft Windows 7 Enterprise
OS Version:                6.1.7601 Service Pack 1 Build 7601
OS Manufacturer:           Microsoft Corporation

これは私のPowerShell情報です。

PS C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40> $psversiontable

Name                           Value
----                           -----
PSVersion                      4.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.18052
BuildVersion                   6.3.9421.0
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.2


PS C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40>

これは、dllをロードしようとしたときに発生したエラーです。

    PS C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40> Add-Type -Path .\WebDriver.dll
    Add-Type : Could not load file or Assembly 'file:///C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40\WebDriver.dll' or one of its dependencies. Operation is
    not supported. (Exception from HRESULT: 0x80131515)
    At line:1 char:1
    + Add-Type -Path .\WebDriver.dll
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [Add-Type], FileLoadException
        + FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.PowerShell.Commands.AddTypeCommand

    PS C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40> [reflection.Assembly]::LoadFrom(".\WebDriver.dll")
    Exception calling "LoadFrom" with "1" argument(s): "Could not load file or Assembly 'file:///C:\Users\test\WebDriver.dll' or one of its dependencies. The system
    cannot find the file specified."
    At line:1 char:1
    + [reflection.Assembly]::LoadFrom(".\WebDriver.dll")
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : FileNotFoundException

    PS C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40> [reflection.Assembly]::LoadFrom("WebDriver.dll")
    Exception calling "LoadFrom" with "1" argument(s): "Could not load file or Assembly 'file:///C:\Users\test\WebDriver.dll' or one of its dependencies. The system
    cannot find the file specified."
    At line:1 char:1
    + [reflection.Assembly]::LoadFrom("WebDriver.dll")
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : FileNotFoundException

    PS C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40> [reflection.Assembly]::LoadFrom("C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40\WebDriver.dll")
    Exception calling "LoadFrom" with "1" argument(s): "Could not load file or Assembly 'file:///C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40\WebDriver.dll' or
    one of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)"
    At line:1 char:1
    + [reflection.Assembly]::LoadFrom("C:\Users\test\Downloads\Selenium-dotnet-2.35.0 ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : FileLoadException

    PS C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40> [reflection.Assembly]::LoadFile("C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40\WebDriver.dll")
    Exception calling "LoadFile" with "1" argument(s): "An attempt was made to load an Assembly from a network location which would have caused the Assembly to be sandboxed

 in previous versions of the .NET Framework. This release of the .NET Framework does not enable CAS policy by default, so this load may be dangerous. If
    this load is not intended to sandbox the Assembly, please enable the loadFromRemoteSources switch. See http://go.Microsoft.com/fwlink/?LinkId=155569 for more
    information."
    At line:1 char:1
    + [reflection.Assembly]::LoadFile("C:\Users\test\Downloads\Selenium-dotnet-2.35.0 ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : NotSupportedException

    PS C:\Users\test\Downloads\Selenium-dotnet-2.35.0\net40>
13
Just a learner

インターネットから.DLLをダウンロードした場合、Powershellはデフォルトでそれらを信頼しません。ここでは、次の2つのいずれかを実行できます。

  1. コンテンツのブロックを解除します。これが 問題の詳細を説明したガイド ですが、基本的には、ダウンロードしたファイルを右クリックして[プロパティ]を選択し、全般タブで[ブロック解除]をクリックするだけです。 Unblock-Fileコマンドレットを使用して、Powershellから直接コンテンツのブロックを解除できます。
  2. 実行ポリシー を変更します。これにより、ダウンロードした悪意のあるスクリプトの実行も許可される可能性があるため、注意が必要です。

特に信頼できるコンテンツのレビューとブロック解除は、特にこれを行うのは1度だけで、パッケージを信頼しているように見えるため、特にあなたの場合には、より良いルートのようです。


編集:それでも解決しない場合、このタイプのエラーで私が経験した他の経験は、Powershellがアセンブリとしての.NETランタイム。一部のコンテキストについては この質問 を参照してください。Powershell2.0は.NET 2ランタイムを実行し、askerは一部のアセンブリに.NET 4を必要としました。

同じバージョンのPSを使用していないため、走行距離が異なる場合がありますが、使用しているDLLのランタイムをサポートするために、リンクされた回答ごとに構成ファイルを作成/編集してみます。

37
Anthony Neace

これは私にとってうまくいきました:(from https://stackoverflow.com/a/19957173/107161

ファイル内:

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>
5
wtjones

管理者として実行すると問題が解決しましたが、私のget-executionpolicyはすべて署名されています

0