我有一个使用Active Directory PowerShell模块(RSAT的一部分)的PowerShell脚本。它在PowerShell 7中的Windows 10机器上运行良好,但在PowerShell 6中的Windows Server 2019 VM上,它返回错误。RSAT的AD工具安装在两台机器上,1.0.1.0当我运行Get-Module -Name ActiveDirectory
时,ActiveDirectory v www.example.com在两台机器上都显示为正确安装:
脚本遍历所有AD组,并使用以下命令将它们放入数组中:
$ADGroupsList = @(Get-ADGroup -Filter * -Properties * | Select-Object DistinguishedName,CN,GroupCategory,Description | Sort-Object CN)
在Server 2019 VM上返回以下错误:
Get-ADGroup : Object reference not set to an instance of an object.
At line:1 char:19
+ Get-ADGroup -Identity ACC_Admin -Properties *
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (ACC_Admin:ADGroup) [Get-ADGroup], NullReferenceException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.NullReferenceException,Microsoft.ActiveDirectory.Management.Commands.GetADGroup
当我将其分解为组成部分时,我发现即使我选择了一个我知道存在并具有属性的特定AD组(如“ACC_Admin”),也会得到相同的错误:
如果我只选择一个属性,比如CN,它工作得很好:
Get-ADGroup -Filter * -Properties CN
结果:
CN : ACC_Admin
DistinguishedName : CN=ACC_Admin,OU=SecurityCameras,DC=ths,DC=local
GroupCategory : Security
Name : ACC_Admin
ObjectClass : group
ObjectGUID : 77d856b4-3f8b-4afc-80cb-106e0b8cbc3b
SamAccountName : ACC_Admin
SID : S-1-5-21-994927589-7149997842-1008150880-53730
当我遍历每一个默认属性以找到罪魁祸首时,我发现ProtectedFromAccidentalDeletion
是导致错误的属性。
这也是令人困惑的,因为对于我正在检查的示例组,这个属性的值是“False”,而不是空白或null,当我从我的个人工作站检查它时:
如果在我的个人工作站上没有返回错误,为什么ProtectedFromAccidentalDeletion
在这里返回NRE,而我的个人工作站安装了相同版本的Active Directory模块(1.0.1.0)?我该怎么弥补?
1条答案
按热度按时间anhgbhbe1#
这是PowerShell 6中的一个bug。解决方案是升级到PowerShell 7,其中was fixed。
参考首次报告并标记为已修复的GitHub问题:
SteveL-MSFT于2019年8月23日评论:
这在PS 7 Preview 3中已修复
(See https://github.com/PowerShell/PowerShellModuleCoverage/issues/8)