Powershell (Get-ADUser -identity).someproperty 未显示结果

Powershell (Get-ADUser -identity).someproperty 未显示结果

当我尝试搜索 AD 用户的个人属性时,我运行

(Get-ADUser $userName).$targetProperty

当我跑的时候我什么也没得到

Get-ADUser $userName | select $targetProperty

我获得了属性,但下面一片空白。但是当我运行时。

Get-ADUser $user -Properties * 

我得到了完整列表,当我查看 $targetProperty 时,那里已经有一个值。我的环境是 1 DC,它是本地的,我处于管理员模式。

答案1

这取决于您尝试获取的目标属性。如果它不是默认集合中的属性之一(即您刚运行 时获取的属性Get-ADUser testuser),则它不在结果集中,因此您无法在命令的其他地方获取它。

以下是默认属性。

DistinguishedName : CN=Test User,CN=Users,DC=domain,DC=local
Enabled           : True
GivenName         : Test
Name              : Test User
ObjectClass       : user
ObjectGUID        : 94916bd1-008e-409f-a1b3-eaXXXXXX266e
SamAccountName    : TestUser
SID               : S-1-5-21-23XXXXXX88-41XXXXX83-1941XXXX34-32584
Surname           : User
UserPrincipalName : [email protected]

假设您想要的属性是Title。那么您的第一个命令是这样的:

(Get-ADUser testuser).Title

Title不在默认属性集中,因此括号内的部分不包含属性Title,所以组合命令的结果为零。

第二次尝试:

Get-ADUser testuser | select Title

这将为您提供单词“Title”作为列的标题,但仍然没有值,因为命令的第一部分仍然没有Title在结果中包含属性。

第三次尝试:

Get-ADUser testuser -Properties * 

啊哈!这很接近了。它包括房产Title,以及一大堆你现在不关心的其他东西。

第四次尝试:

(Get-ADUser testuser -Properties *).title

就是这样!此组合获取用户的所有属性(因此包括Title),然后仅显示Title属性。

选修的:您可以让它更快一些,不用费心去请求给-Properties *您的 100 多个属性,而只获取默认属性加上Title,如下所示:

(Get-ADUser testuser -Properties Title).Title

答案2

我发现以下命令可以让我获取信息,但为什么它不能与我的其他命令一起使用?

(Get-ADUser $user -Properties *).$targetProperty

相关内容