Назад | Перейти на главную страницу

Не удается импортировать модуль NTFSSecurity из пути UNC

Я создал центральный репозиторий для модулей Powershell, но, в частности, у меня проблемы с загрузкой одного из них. В NTFSSecurity модуль не может импортировать со следующим сообщением.

PS Z:\> Import-Module NTFSSecurity
Add-Type : Could not load file or assembly 'file://\\fs\PowerShellModules\NTFSSecurity\Security2.dll' or one of its
dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
At \\fs\PowerShellModules\NTFSSecurity\NTFSSecurity.Init.ps1:141 char:1
+ Add-Type -Path $PSScriptRoot\Security2.dll
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Add-Type], FileLoadException
    + FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.PowerShell.Commands.AddTypeCommand

Add-Type : Could not load file or assembly 'file://\\fs\PowerShellModules\NTFSSecurity\PrivilegeControl.dll' or one
of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
At \\fs\PowerShellModules\NTFSSecurity\NTFSSecurity.Init.ps1:142 char:1
+ Add-Type -Path $PSScriptRoot\PrivilegeControl.dll -ReferencedAssemblies $PSScrip ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Add-Type], FileLoadException
    + FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.PowerShell.Commands.AddTypeCommand

Add-Type : Could not load file or assembly 'file://\\fs\PowerShellModules\NTFSSecurity\ProcessPrivileges.dll' or one
of its dependencies. Operation is not supported. (Exception from HRESULT: 0x80131515)
At \\fs\PowerShellModules\NTFSSecurity\NTFSSecurity.Init.ps1:143 char:1
+ Add-Type -Path $PSScriptRoot\ProcessPrivileges.dll
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Add-Type], FileLoadException
    + FullyQualifiedErrorId : System.IO.FileLoadException,Microsoft.PowerShell.Commands.AddTypeCommand

Types added
NTFSSecurity Module loaded
Import-Module : Unable to find type [Security2.IdentityReference2]: make sure that the assembly containing this type
is loaded.
At line:1 char:1
+ Import-Module NTFSSecurity
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (Security2.IdentityReference2:TypeName) [Import-Module], RuntimeExcept
   ion
    + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand

Я использую бета-версию Windows Managment Foundation 3.0, которая включает PowerShell 3.0. У меня есть ощущение, что новые меры безопасности, представленные в .NET 4.0, играют в этом свою роль, но работают Powershell.exe с -version 2.0 переключатель тоже ничего не исправляет. Я изменил свой powershell.exe.config файлы в обоих system32 и SysWOW64 папки в следующие.

<?xml version="1.0"?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0.30319"/>
        <supportedRuntime version="v2.0.50727"/>
    </startup>
    <runtime>
        <loadfromremotesources enabled="true"/>
    </runtime>
</configuration>

Файлы не "заблокированы", я проверял каждый индивидуально (а также запускал Unblock-File в справочнике). Разрешения со стороны сервера в порядке, я убедился, что у меня есть доступ ко всему. Что я не проверял?

Вместо того, чтобы загружать модуль напрямую из общего ресурса, я обычно использую функцию, которая копирует его локально (это также можно настроить для поиска более новых версий). Я предполагаю, что это можно было бы написать в строке, но я сделал это функцией как часть моих «общих модулей», которые я загружаю.

Function Import-NTFSModule {
   $NTModule = 'C:\Windows\System32\WindowsPowershell\v1.0\Modules\NTFSSecurity'
   $NTSource = '\\servername.fqdn\sharename\Modules\NTFSSecurity'
   If (!(Get-Module -Name NTFSSecurity)) {
      If (!(Test-Path -Path $NTModule) -and (Test-Path $NTSource)) { Copy-Item $NTSource -Destination "$NTModule\" -Recurse -Force }
   }
}

Возможно, это поврежденный файл / неправильная загрузка.

Я получал ту же ошибку при попытке загрузить модуль из одного из моих скриптов. Я пошел и повторно загрузил новую версию 2.3 и извлек ее в свою папку модулей Powershell (C: \ windows \ system32 \ WindowsPowershell \ v1.0 \ Modules \ NTFSSecurity).

Это решило мою проблему.

По умолчанию загруженный файл .ZIP заблокирован от выполнения. Щелкните его правой кнопкой мыши и выберите «Разблокировать», прежде чем распаковать его, и файлы под ним также будут разблокированы.

Извините, что когда я изначально писал, я не увидел, что вы сказали, что разблокировали его. Я получил ошибку (идентичный код ошибки) только тогда, когда файлы находились в заблокированном состоянии.

Запустите Import-Module NTFSSecurity из Windows Powershell (не ISE)