Get-ADUser在单个计算机上的某些属性上失败

时间:2016-04-29 15:58:18

标签: powershell

问题机器正在运行Windows 7,Powershell 5.0.10586.117。

这是一个奇怪的问题,似乎表明在一台机器上的环境有问题,但我似乎无法追踪它。基本上,问题是当我运行时

Get-ADUser username -Properties * 

我收到以下错误:

Get-ADUser : Object reference not set to an instance of an object.
At line:1 char:1
+ Get-ADUser username -Properties *
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (username:ADUser) [Get-ADUser], NullReferenceException
+ FullyQualifiedErrorId : Object reference not set to an instance of an object.,Microsoft.ActiveDirectory.Management.Commands.GetADUser

我在2012r2盒子(PS版本4.0)上运行了相同的命令,它完成没有问题。

在Win7框中运行没有-Properties *的命令,该命令将成功完成。另外,我可以将属性添加到-Properties以及-Properties AccountExpirationDate,POBox,telephoneNumber',命令也会成功完成。最后,我构建了一个包含所有AD属性的数组,并将其分解为四个属性,这些属性会在Win7框上产生不同的错误。

PrincipalsAllowedToDelegateToAccount, CompoundIdentitySupported, AuthenticationPolicySilo, AuthenticationPolicy'属性会在Win7框中导致无效参数异常。

PrimaryGroup属性导致NullReferenceException。

通过在2012r2框(或基本上任何机器上,除了问题Win7之外)成功运行命令来提取这些属性时,它们具有以下值:

AuthenticationPolicy                 : {}
AuthenticationPolicySilo             : {}
CompoundIdentitySupported            : {}
PrimaryGroup                         : CN=Domain Users,OU=BuiltInUsers,DC=ad,DC=domain,DC=com
PrincipalsAllowedToDelegateToAccount : {}

我没有在Win7机箱和AFAIK上使用Powershell配置文件,我没有对环境进行任何重大修改。我没有把所有内容卸回到默认设置并重新开始,所以我希望有人可能知道造成这种情况的原因。

1 个答案:

答案 0 :(得分:0)

它是通过反复试验而出现的,而我本人对此问题也进行了大量研究, 有一些帐户 PrincipalsAllowedToDelegateToAccount, CompoundIdentitySupported, AuthenticationPolicySilo, 认证政策 ACL将显示此错误。 您可以使用try / catch来遍历广告用户:

    $ids= Get-ADUser -Filter *
    foreach ($id in $IDs) {
        Try {
            $user = Get-ADUser -Identity $id -Properties *
            Write-Host "Success: $($user.name)"
        }
        Catch {
            # continue to next
            Write-Host "Failure: $($user.name)"
        }
    }