从 UNC 路径导入 NTFSSecurity 模块失败

从 UNC 路径导入 NTFSSecurity 模块失败

我已经为 Powershell 模块创建了一个中央存储库,但在加载某个模块时遇到了问题。NTFS安全模块导入失败,并显示以下消息。

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 Beta,其中包括 PowerShell 3.0。我感觉 .NET 4.0 中引入的新安全措施正在发挥作用,但使用Powershell.exe开关运行-version 2.0也无法解决任何问题。我已经修改了我的powershell.exe 文件配置文件中system32系统WOW64文件夹复制到以下位置。

<?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在目录上运行了文件)。服务器端的权限没有问题,我已经验证我可以访问所有内容。我还有哪些没有检查?

答案1

这可能是损坏的文件/错误的下载。

当我尝试从我的一个脚本加载模块时,我收到了同样的错误。我去重新下载了较新的 v2.3,并将其解压缩到我的 Powershell 模块文件夹 (C:\windows\system32\WindowsPowershell\v1.0\Modules\NTFSSecurity)。

这解决了我的问题。

答案2

我倾向于使用一个函数来本地复制模块(也可以调整该函数来查找较新的版本),而不是直接从共享中加载模块。我想这可以内联编写,但我将其作为我加载的“通用模块”的一部分。

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 }
   }
}

答案3

默认情况下,您下载的 .ZIP 文件是被阻止执行的。在解压之前,右键单击它并选择“解除阻止”,下面的文件也将解除阻止。

抱歉,我最初发帖时没有看到您说您已解除阻止。只有在文件处于阻止状态时,我才收到错误(相同的错误代码)。

答案4

从运行 Import-Module NTFSSecurityWindows Powershell(不是伊势

相关内容