Загрузка сборки Add-Type из сетевой папки UNC, ошибка 0x80131515

Если вы хотите добавить сборку из сетевого UNC общего ресурса с помощью команды :

$scriptPath = Split-Path ($MyInvocation.MyCommand.Path)
Add-Type -path "$scriptPath\selenium-dotnet\net40\WebDriver.dll"

вы можете столкнуться с такой ошибкой:

Add-Type: Could not load file or assembly 'file:///Z:\A-Backup\Users\Administr
ator\Desktop\MAXIMO Automatic\selenium-dotnet\net40\WebDriver.dll' or one of it
s dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515
)
At Z:\A-Backup\Users\Administrator\Desktop\MAXIMO Automatic\MAXIMO Automatic.ps
1:14 char:1
+ Add-Type -path "$scriptPath\selenium-dotnet\net40\WebDriver.dll"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Add-Type], FileLoadException
    + FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.PowerShell
   .Commands.AddTypeCommand

Как я могу решить эту проблему?


person ALIENQuake    schedule 13.11.2013    source источник


Ответы (3)


Ключевым моментом является возможность загрузки сборки из сетевого пути для исполняемого файла PowerShell. Это можно сделать, создав два файла

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>
person ALIENQuake    schedule 13.11.2013
comment
Вроде в Windows Server 2012 R2 этого сделать нельзя - доступ запрещен. - person Michael Logutov; 14.05.2015
comment
Войдите в систему как локальный администратор и измените владельца файла на свою учетную запись. Затем назначьте доступ для изменения вашей учетной записи к файлам, внесите изменения и отмените изменения безопасности. - person ShaneC; 21.03.2017

Re: ALIENQuake. Я добавил ваше исправление в сценарий PS для установки файлов в нужных местах.

$PSPaths = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe.config','C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe.config'
$XMLCode = @"
<?xml version="1.0" encoding="utf-8" ?> 
<configuration>
   <runtime>
         <loadFromRemoteSources enabled="true"/>
    </runtime>
</configuration>
"@
foreach($PSConfigFile in $PSPaths) {
    $xmlcode | Out-File -FilePath $PSConfigFile -Encoding utf8 
}
person Josh Castillo    schedule 16.01.2015

Вместо Add-Type вы можете:

[System.Reflection.Assembly]::UnsafeLoadFrom('\\uncpath\driver.dll')

Он проигнорирует некоторые настройки безопасности и загрузит библиотеку, но это небезопасно ;).

person AdamL    schedule 30.06.2017