繁体   English   中英

Powershell中的ADUsers属性无法正确显示

[英]Properties not showing correctly for ADUsers in Powershell

在Powershell中查看ADUsers时,发现有些奇怪的地方。

如果输入以下内容:

PS> Get-ADUser Xuser -Properties PasswordLastSet, LastLogonDate

我会得到这样的输出:

DistinguishedName : CN=Xuser,OU=Domain Users,DC=LocalDC,DC=local
Enabled           : True
GivenName         : 
LastLogonDate     : 7/14/2016 8:24:03 AM
Name              : Xuser
ObjectClass       : user
PasswordLastSet   : 7/1/2016 11:48:37 AM
SamAccountName    : Xuser
Surname           :
UserPrincipalName :

如您所见,我在PasswordLastSet和LastLogonDate上都有时间戳。

但是,如果我输入以下内容:

PS> $user = Get-ADUser Xuser
PS> $user.LastLogonDate -eq $null
PS> True
PS> $user.PasswordLastSet -eq $null
PS> True

为了确保没有混乱,我输入:

PS> $user

DistinguishedName : CN=Xuser,OU=Domain Users,DC=LocalDC,DC=local
Enabled           : True
GivenName         : 
LastLogonDate     : 
Name              : Xuser
ObjectClass       : user
PasswordLastSet   : 
SamAccountName    : Xuser
Surname           :
UserPrincipalName :

由于某种原因,该信息显示$ null。

我注意到的一件事是,当我键入时:

PS> $user = Get-ADUser Xuser

默认情况下,它不收集PasswordLastSet和LastLogonDate -您必须使用-Properties开关将特定信息请求为参数。

如果输入:

PS> $user.LastLogonDate
PS> $user

现在,它具有LastLogonDate字段,但它为$ null。 如果输入以下内容,则同样如此:

PS> $user.PasswordLastSet
PS> $user

$user的输出中都显示了PasswordLastSet和LastLogonDate,但是如果我运行一个条件以查看值是否为$ null,它将返回True

有点怪异的行为,我很好奇为什么这样做。 我最好的猜测是,$ user仅使用Get-ADUser cmdlet的默认信息填充,并且非常简单地为WYSIWYG。 要获取这些特定字段,我必须隐式请求它们。

我想查看默认情况下是否隐藏了某些字段(除非在初始Get-ADUser cmdlet中要求),所以,我键入了:

PS> $user.random
PS> $user

可以肯定的是, random :那里是一个领域。

我什至可以做到这一点:

PS> $user.random = "Property"

当我输入$user时,它显示为random : {Property}

问题:有人可以简要解释一下为什么会这样吗?

如果您要测试变量是否具有内容而不是仅仅存在,请尝试:

$user.LastLogonDate.Length -gt 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM