我已经为 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(不是伊势)