当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] Get-AdUser:使用 PowerShell 查找 Active Directory 用户

作者:精品下载站 日期:2024-12-14 13:14:47 浏览:16 分类:玩电脑

Get-AdUser:使用 PowerShell 查找 Active Directory 用户


如果您需要查找域中的 Active Directory (AD) 用户,可以使用 Powershell Get-Aduser 命令。用户帐户分配给员工、服务帐户和其他资源。在您不知不觉中,AD 用户帐户变得越来越难以管理。

使用 Get-AdUser PowerShell cmdlet,您可以通过多种不同方式获取 AD 用户。在本文中,您将学习其中一些方法以及如何使用这个方便的 cmdlet。

先决条件

要使用本文中介绍的 Get-AdUser cmdlet 示例,请确保您具备以下条件:

  • 在加入 AD 域的 Windows PC 上
  • 以 AD 用户帐户登录
  • 安装了 PowerShell Active Directory 模块

查找具有 Identity 的用户帐户

Get-AdUser cmdlet 有一个用途,而且只有一个用途。它的存在是为了提供尽可能多的选项来查找域用户。如果您已经知道要查找的用户名,则可以使用 Identity 参数。

Identity 参数允许您提供四种不同标识符之一。

  • 专有名称 (DN)
  • sam 帐户名
  • GUID
  • 安全识别码

您可以在下面看到一些使用各种标识符查找用户帐户的示例。请注意,它为每个用户帐户返回一组 AD 属性。

PS> Get-ADUser -Identity abertram


DistinguishedName : CN=Anne Bertram,OU=Marketing,DC=mylab,DC=local
Enabled           : False
GivenName         : Anne
Name              : Anne Bertram
ObjectClass       : user
ObjectGUID        : b98fd0c4-3d5d-4239-8245-b04145d6a0db
SamAccountName    : abertram
SID               : S-1-5-21-4117810001-3432493942-696130396-3142
Surname           : Bertram
UserPrincipalName : [email 



PS> Get-ADUser -Identity 'S-1-5-21-4117810001-3432493942-696130396-3142'


DistinguishedName : CN=Anne Bertram,OU=Marketing,DC=mylab,DC=local
Enabled           : False
GivenName         : Anne
Name              : Anne Bertram
ObjectClass       : user
ObjectGUID        : b98fd0c4-3d5d-4239-8245-b04145d6a0db
SamAccountName    : abertram
SID               : S-1-5-21-4117810001-3432493942-696130396-3142
Surname           : Bertram
UserPrincipalName : [email 



PS> Get-ADUser -Identity 'CN=Anne Bertram,OU=Marketing,DC=mylab,DC=local'


DistinguishedName : CN=Anne Bertram,OU=Marketing,DC=mylab,DC=local
Enabled           : False
GivenName         : Anne
Name              : Anne Bertram
ObjectClass       : user
ObjectGUID        : b98fd0c4-3d5d-4239-8245-b04145d6a0db
SamAccountName    : abertram
SID               : S-1-5-21-4117810001-3432493942-696130396-3142
Surname           : Bertram
UserPrincipalName : [email 

用于 Identity 参数的最常见属性是 samAccountName 属性。

Get-ADUser 过滤器

如果您需要查找多个域用户或不知道标识符,请使用过滤器。为此,您手头上有几个参数,分别称为 FilterLDAPFilter

每个过滤器参数都允许用户提供条件语句。满足此条件时,Get-AdUser 将返回符合该条件的用户帐户。

过滤用户最常用的参数是FilterFilter 参数允许您创建类似于 PowerShell Where-Object 命令过滤器语法的条件。

Filter 参数使用一种称为 PowerShell 表达式语言语法的语言。这种语言有点像 Where-Object 使用的语言,但又不完全一样。有关如何使用此过滤器的详细信息,请查看此 Active Directory 和 LDAP 过滤器文章。

下面是使用 Filter 参数的示例。此示例提供 AD 属性(本例中为 givenName)并设置条件。仅当用户的 givenName 等于 Adam 时,过滤器才允许用户返回。

PS> Get-AdUser -Filter "givenName -eq 'Adam'"


DistinguishedName : CN=ADBertram,OU=Accounting,DC=mylab,DC=local
Enabled           : False
GivenName         : Adam
Name              : ADBertram
ObjectClass       : user
ObjectGUID        : 8ec5e2a8-1fda-42cb-9406-b1e6356dd457
SamAccountName    : ADBertram
SID               : S-1-5-21-4117810001-3432493942-696130396-3163
Surname           : Bertram
UserPrincipalName : ADBertram

DistinguishedName : CN=Hughes\, Adam,CN=Users,DC=mylab,DC=local
Enabled           : True
GivenName         : Adam
Name              : Hughes, Adam
ObjectClass       : user
ObjectGUID        : 96778db3-3dbd-4b83-9183-db111caa2791
SamAccountName    : ahughes
SID               : S-1-5-21-4117810001-3432493942-696130396-38201
Surname           : Hughes
UserPrincipalName :

另一个过滤选项是LDAPFilter,本文不会介绍它。有关 LDAPFilter 及其语法的更多信息,请查看这篇有关 Active Directory 和 LDAP 过滤器的文章。

使用 OU 的 Get-AdUser

通过提供身份或过滤器,PowerShell 返回域中匹配条件的所有用户。不受OU限制。您需要为 Get-AdUser 设置一个“过滤器”,以便使用 Get-Aduser -SearchBase 按 OU 进行过滤。

使用 SearchBase 参数允许您开始在特定 OU 中搜索用户帐户。 SearchBase 参数接受 OU 的专有名称 (DN)。

例如,您可以在 MyUsers OU 中找到所有用户,如下所示。使用*Filter表示匹配所有用户帐户。

PS> Get-ADUser -Filter * -SearchBase 'OU=MyUsers,DC=domain,DC=local'

也许您只想在单个 OU 中查找用户帐户并排除任何子 OU。在这种情况下,您可以使用 SearchBaseSearchScope 参数。 SearchScope 参数定义您要在 OU 层次结构中搜索的深度。

例如,如果您想要查找某个 OU 中的所有用户帐户以及所有子 OU,则可以使用 1 作为 SearchScope 值。如果您想搜索所有子组织单位和孙组织单位,您可以使用2

下面是在 MyUsers OU 及其下的所有子 OU 中搜索用户帐户的示例。

PS> Get-ADUser -Filter * -SearchBase 'OU=MyUsers,DC=domain,DC=local' -SearchScope 2

使用备用凭证

默认情况下,Get-AdUser 将在登录用户的上下文中运行。但您也可以使用 Credential 参数提供替代凭据。

要使用备用凭据进行身份验证,请使用 Get-Credential 创建一个 PSCredential 对象,如下所示:

PS> $cred = Get-Credential
PS> Get-AdUser -Filter * -Credential $cred

有关凭据的更多信息,请查看使用 PowerShell Get-Credential cmdlet 和所有凭据。

PowerShell Get-AdUser 属性参数

当您运行 Get-AdUser 时,您会立即看到只返回了一些属性。您还会看到,即使输出通过管道传输到 Select-Object -Property * ,也不会返回所有属性。

要使用 PowerShell 获取 AD 用户属性,请使用 Property 参数。此参数接受一个或多个以逗号分隔的属性以随输出一起显示。

下面您将看到一个使用 Get-AdUser 查找 givenNameAdam 的所有用户帐户的所有属性的示例。输出被截断,但您会在此处看到其他熟悉的属性,例如电子邮件地址、密码属性等。

PS> Get-AdUser -Filter "givenName -eq 'Adam'" -Properties *


AccountExpirationDate                :
accountExpires                       : 9223372036854775807
AccountLockoutTime                   :
AccountNotDelegated                  : False
AllowReversiblePasswordEncryption    : False
AuthenticationPolicy                 : {}
AuthenticationPolicySilo             : {}
BadLogonCount                        : 0
badPasswordTime                      : 0
badPwdCount                          : 0
CannotChangePassword                 : False
CanonicalName                        : mylab.local/Accounting/ADBertram
........

概括

Get-ADUser cmdlet 是一个方便的命令,用于查找 AD 用户帐户、构建报告等。这是从域中提取 AD 用户的好方法。有关 Get-AdUser 和所有参数的详细信息,请通过运行 Get-Help Get-AdUser 阅读帮助内容。

有关如何使用 Get-AdUser 的许多其他示例,请查看博客文章 Active Directory 脚本丰富:来吧,获取它!

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯