我有一个使用 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 组,并使用以下命令将它们放入一个数组中:
$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”:
如果我只选择一个属性,例如 CN,它可以正常工作:
当我遍历每个默认属性以找到罪魁祸首时,我发现这ProtectedFromAccidentalDeletion
是导致错误的属性。
这也令人困惑,因为当我从我的个人工作站检查它时,我正在检查的示例组的该属性的值为“False”,而不仅仅是空白或 null:
ProtectedFromAccidentalDeletion
如果我的个人工作站上安装了相同版本的 Active Directory 模块 (1.0.1.0),它没有返回错误,为什么要在此处返回 NRE?我该如何解决?