删除所有Java版本:PowerShell脚本指南

如果您需要在您的域中查找Active Directory(AD)用户,PowerShell的Get-AdUser命令就在这里。用户帐户分配给员工、服务帐户和其他资源。在您知道之前,AD用户帐户变得难以管理。

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

使用ManageEngine ADManager Plus管理和报告Active Directory、Exchange和Microsoft 365。下载免费试用版!

先决条件

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

使用Identity查找用户帐户

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

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

  • distinguishedName (DN)
  • samAccountName
  • GUID
  • SID

下面您可以看到使用各种标识符查找用户帐户的一些示例。请注意,它返回每个用户帐户的一组 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 : abertram@mylab.local



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 : abertram@mylab.local



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 : abertram@mylab.local

用于 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 过滤器

使用 Get-AdUser 按 OU

通过提供标识或过滤器,PowerShell 返回符合条件的域中的所有用户。它不限于 OU。您需要为 Get-AdUser 设置一个“过滤器”,以便使用 Get-Aduser -SearchBase <OU> 按 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 中查找所有用户帐户,你可以将SearchScope值设为1。如果你想要搜索所有子 OU 和孙子 OU,你可以使用2

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

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

使用备用凭据

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

要使用备用凭据进行身份验证,请像下面这样创建一个PSCredential对象:Get-Credential

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
........

使用 ManageEngine ADManager Plus 管理和报告 Active Directory、Exchange 和 Microsoft 365。立即下载免费试用!

摘要

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

要了解如何使用 Get-AdUser 的许多其他示例,请查看博客文章Active Directory Scripts Galore: Come and Get It!

Source:
https://adamtheautomator.com/get-aduser/