-1

我有一个使用 Active Directory PowerShell 模块(RSAT 的一部分)的 PowerShell 脚本。它在我的 PowerShell 7 中的 Windows 10 机器上运行良好,但在 PowerShell 6 中的 Windows Server 2019 VM 上,它返回错误。RSAT 的 AD 工具安装在两台机器上,当我运行时,ActiveDirectory v 1.0.1.0 在两台机器上都显示为正确安装Get-Module -Name ActiveDirectory

AD 模块显示为正确安装

该脚本遍历所有 AD 组,并使用以下命令将它们放入一个数组中:

$ADGroupsList = @(Get-ADGroup -Filter * -Properties * | Select-Object DistinguishedName,CN,GroupCategory,Description | Sort-Object CN)

这将在 Server 2019 VM 上返回以下错误:

Get-ADGroup:对象引用未设置为对象的实例。
在行:1 字符:19
+ 获取 ADGroup -Identity ACC_Admin -Properties *
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (ACC_Admin:ADGroup) [Get-ADGroup], NullReferenceException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.NullReferenceException,Microsoft.ActiveDirectory.Management.Commands.GetADGroup

当我把它分解成它的组成部分时,我发现我得到了同样的错误Get-ADGroup -Properties *,即使我选择了一个我知道存在并且具有属性的特定 AD 组,比如“ACC_Admin”:

选择特定组的所有属性时出现 NRE 错误

如果我只选择一个属性,例如 CN,它可以正常工作:

仅指定一个属性时 AD 组的正确结果

当我遍历每个默认属性以找到罪魁祸首时,我发现这ProtectedFromAccidentalDeletion是导致错误的属性。

这也令人困惑,因为当我从我的个人工作站检查它时,我正在检查的示例组的该属性的值为“False”,而不仅仅是空白或 null:

在我的工作站上工作的带有属性的 Get-ADGroup 命令

ProtectedFromAccidentalDeletion如果我的个人工作站上安装了相同版本的 Active Directory 模块 (1.0.1.0),它没有返回错误,为什么要在此处返回 NRE?我该如何解决?

4

1 回答 1

0

这是 PowerShell 6 中的一个错误。解决方案是升级到已修复的 PowerShell 7 。

参考 GitHub 问题,该问题首次报告并标记为已修复:

SteveL-MSFT在 2019 年 8 月 23 日评论道

这已在 PS7 Preview3 中修复

(另见https://github.com/PowerShell/PowerShellModuleCoverage/issues/8

于 2021-08-16T17:49:32.500 回答