Не удается импортировать модуль 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
в каталоге). Разрешения со стороны сервера в порядке, я проверил, что у меня есть доступ ко всему. Что я не проверил?
4 ответа
По умолчанию загружаемый вами файл.ZIP заблокирован от запуска. Щелкните правой кнопкой мыши по нему и выберите "Разблокировать", прежде чем распаковать его, и файлы внизу также будут разблокированы.
Извините, что, когда я первоначально отправил сообщение, я не увидел, что вы сказали, что разблокировали его. Я получил только ошибку (идентичный код ошибки), когда файлы были заблокированы.
Вместо того, чтобы загружать модуль напрямую из общего ресурса, у меня, как правило, есть функция, которая копирует его локально (это также можно настроить для поиска более новых версий). Я полагаю, что это может быть написано в строке, но я сделал это функцией как часть моих "общих модулей", которые я загружаю.
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 Modules (C:\windows\system32\WindowsPowershell\v1.0\Modules\NTFSSecurity).
Это решило мою проблему.
Запустите модуль импорта NTFSSecurity из Windows Powershell (не ISE)