刪除所有 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 命令有一个目的,且仅有一个目的。它的存在是为了提供尽可能多的选项来查找域用户。如果您已经知道要查找的用户名,可以使用 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篩選器

使用按OU組織的Get-AdUser

通過提供標識或篩選,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,可以使用2

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

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

使用替代凭据

默认情况下,Get-AdUser将在当前用户的上下文中运行。但是您也可以使用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
........

使用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/