为什么Get-ADObject无法正确过滤ObjectClass =“ user”?

Toh*_*huw 1 powershell active-directory powershell-3.0

问题

Get-ADObject -Filter {ObjectClass = "User"}
Run Code Online (Sandbox Code Playgroud)

返回用户和计算机。对象类正确显示为“用户”或“计算机”。

Get-ADobject -Filter {ObjectClass = "Computer"}
Run Code Online (Sandbox Code Playgroud)

仅返回计算机。

其他观察

Get-ADObject "CN=desktop1,CN=Computers,DC=contoso,DC=com" `
| Get-Member -Property ObjectClass
Run Code Online (Sandbox Code Playgroud)

退货

TypeName: Microsoft.ActiveDirectory.Management.ADObject

Name              MemberType            Definition
----              ----------            ----------
ObjectClass       Property              System.String ObjectClass {get;set;}
Run Code Online (Sandbox Code Playgroud)

此外,这False将按预期返回:

$(Get-ADObject "CN=desktop1,CN=Computers,DC=contoso,DC=com").ObjectClass -eq "User"
Run Code Online (Sandbox Code Playgroud)

Ans*_*ers 5

由于计算机类是从用户类派生的,因此可以查询objectClass=User返回的用户计算机对象。如果只需要用户对象,请过滤objectClass=User objectCategory=Person。看这里