通过 Get-ADUser Powershell Cmdlet 进行用户管理
介绍
PowerShell 中的 Get-ADUser cmdlet 提供了许多参数,用于在 Active Directory (AD) 域中查找一个或多个用户。
默认情况下,PowerShell 使用登录到计算机的帐户运行。如果要使用不同的帐户运行命令,可以在命令之前使用此开关强制 PowerShell 提示您输入凭据:
$cred =Get-Credential搜索特定用户
-身份参数
如果您知道要获取哪个 AD 用户,请使用 -Identity 参数:
Get-ADUser -Identity “identifier”为标识符指定以下之一:
- 专有名称 (DN)
- Sam 帐户名
- GUID
- 安全识别码
例子
Get-ADUser -Identity "ABBEY.Crawford"将搜索限制到特定 OU
-SearchBase参数
使用 -SearchBase 参数将搜索限制为特定 OU,由其专有名称 (DN) 指定:
Get-ADUser -Filter "givenname -Like 'Abbey'" -SearchBase "distinguishedName of OU"例子
Get-ADUser -Filter "givenname -Like 'Abbey'" -SearchBase "OU=Versacorp,DC=milkyway,DC=local"-SearchScope参数
组合 SearchBase 和 SearchScope 参数可将搜索限制为特定 OU 和指定数量的子 OU 级别。例如,要在 OU 及其直接子 OU 中查找用户帐户,请为 SearchScope 指定值 1。要包括子 OU 和孙 OU,请使用值 2。
Get-ADUser -SearchBase " distinguishedName of OU " -SearchScope "2"例子
Get-ADUser -Filter "givenname -Like 'Abbey'" -SearchBase "OU=Versacorp,DC=milkyway,DC=local" -SearchScope "2"过滤特定用户组
- 过滤参数
如果您不知道任何标识符的确切值,您可以指定要过滤的属性和过滤器的值,如下所示:
Get-ADUser -Filter “filter value”运营商
| Operator | Meaning | Sample expression |
| -eq | Equal to | Name -like ‘Inga’ |
| -ne | Not equal to | Country -ne ‘US’ |
| -gt | Greater than | BadLogonCount -gt ‘0’ |
| -ge | Greater than or equal | Modified -ge ’06-04-2021 12:00:00? |
| -lt | Less than | LastLogonTimeStamp -lt ’01-08-2020? |
| -le | Less than or equal | Created -le ’01-08-2020? |
| -like | Wildcard search | Mail -like ‘*@xyz.com’ |
| -notlike | Wildcard search with negation | Department -notlike ‘*’ |
| -and | And | Country -eq ‘US’ -and Department -eq ‘Operations’ |
| -or | Or | Country -eq ‘US’ -or -Country -eq ‘UK’ |
查找具有特定名称的用户
要使用名字或部分名字搜索用户,请使用 -Filter 参数以及 -like 子句和一个值。
以下示例显示了 Filter 参数的使用,其中涉及 AD 属性给定名称。它返回给定名称包含 Abbey 的用户。
Get-ADUser -Filter “givenname -Like ‘Abbey’”查找名称相似的用户
您可以使用通配符修改前面的命令来获取名称以特定字符串开头的所有用户,如下所示:
Get-ADUser -Filter "Name -like 'Abb*'" | Select Name,givenname,surname,samAccountName,distinguishedname | ftG查找所有启用的用户
如果您想查看所有启用的用户,可以使用以下 cmdlet:
Get-ADUser -filter {Enabled -eq "true"} | ft查找禁用用户
查找禁用用户对于促进 AD 清理非常有价值。使用带有一个过滤器的简单命令,“-Filter “Enabled -eq ‘false’””可能会返回数百个禁用用户,因为一些公司更愿意保留其 Active Directory 对象用于审核目的。使用具有特定 OU 的 -SearchBase 过滤器来限制结果。例如,此 cmdlet 将查找特定 OU 中的所有禁用的用户帐户:
Get-ADUser -Filter “Enabled -eq 'false'” -SearchBase "CN=Users,DC=Knox,DC=lab" -Properties * | Select Name,Enabled |ft查找拥有电子邮件地址的用户
要查找分配有邮箱的所有用户,请使用以下命令:
Get-ADUser -Filter {mail -ne "null"} -Properties Name,GivenName,mail| ft Name,GivenName,mail查找未设置密码过期的帐户
为了加强安全性,您可能需要查找“passwordneverexpires”属性设置为 true 的所有帐户,如下所示:
Get-ADUser -Filter {passwordneverexpires -eq "true"} | Select Name, sAMAccountName查找过时的用户帐户
有时,我们需要过滤掉一段时间没有使用的用户帐户。以下是查找过去 60 天内未使用的所有用户帐户的方法:
$CutoffDate = (Get-Date).AddDays(-60)
Get-ADUser -Filter "LastLogonDate -lt '$CutoffDate'" -Properties LastLogonDate | Select Name, LastLogonDate查找在特定日期创建的用户
要查看 Active Directory 中特定日期创建的所有用户帐户,可以使用以下命令:
Get-ADUser -Filter {Created -lt '7/30/2021'} | Select Name组合多个过滤器
您可以组合多个过滤器来定义用于查找用户的复杂标准。
实施例1
以下命令将返回销售部门所有已启用的用户:
Get-ADUser -Filter "Enabled -eq 'true' -and Department -like 'Sales'" -Properties * | Select Name, Department |ft实施例2
以下 cmdlet 将返回部门属性不为 null 并且名称以字母 A 开头的所有用户:
Get-ADUser -filter {Department -ne "null"} | Where-Object Name -like 'A*'控制显示哪些属性
-性能参数
默认情况下,Get-ADUser 命令仅返回少数参数。如果您想要用户属性的扩展列表,请使用以下 cmdlet:
Get-ADUser -Identity “Identifier” -Properties *显示一组特定的属性
或者,您可以明确列出您想要为用户查看的属性:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,Enabled,mail,department,company,title,c,st,streetaddress |ft显示组成员资格
要查看用户的成员资格,请使用以下 cmdlet:
Get-ADUser -Identity Abbey.crawford -Properties memberof | Select-Object -ExpandProperty memberof显示电子邮件地址
如果您想查看特定用户的电子邮件地址,请使用以下 cmdlet:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,mail |ft显示用户主体名称 (UPN)
要检索用户的 UPN,请使用以下 cmdlet:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,userprincipalname |ft显示 SAM 帐户名称
要显示用户的 SAM 帐户名,请使用以下 cmdlet:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,samAccountName |ft显示显示名称
如果您想查看用户的显示名称(例如,因为 ADUC 中的显示名称可能不同),您可以使用以下 cmdlet:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,displayname |ft显示专有名称
要查看用户的可分辨名称,请使用以下 cmdlet:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,distinguishedname |ft显示代理地址
如果您想查看用户的代理地址,请使用以下 cmdlet:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,proxyaddresses |ft显示用户的管理员
要显示用户管理员的 SAM 帐户名,请使用以下命令:
Get-ADUser “User Identifier” -properties * | select amAccountName, @{Name=’Manager’;Expression={(Get-ADUser($_.manager)).samaccountname}}显示员工 ID
要查看用户的员工 ID,请使用以下 cmdlet:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,employeeid |ft显示电话号码
要查找用户的所有电话号码,请使用以下命令:
Get-ADUser -Identity “User Identifier” -Properties * | Select *Phone*要以表格形式显示这些值,请使用以下命令:
Get-ADUser -Identity “User Identifier” -Properties * | Select Name, *Phone* | ft显示密码到期日期和时间
要查看帐户的密码到期日期,请使用以下 cmdlet:
Get-ADUser -Identity “User Identifier” -Properties msDS-UserPasswordExpiryTimeComputed | select Name, {[datetime]::FromFileTime($_.”msDS-UserPasswordExpiryTimeComputed”)}显示帐户创建日期
要查看 AD 中创建用户帐户的时间,请使用以下命令:
Get-ADUser -filter * -Properties Name,whencreated | ft Name,WhenCreated显示上次登录日期和时间
如果您想查看用户上次登录任何系统的时间,请使用以下 cmdlet:
Get-ADUser -Identity Abbey.Crawford -Properties * | Select Name,lastlogondate |ft显示上次密码更改日期和时间
要查看用户上次更改密码的时间,请使用以下 cmdlet:
Get-ADUser -Identity Abbey.Crawford -properties PwdLastSet,PasswordLastSet | sort Name | ft Name,PwdLastSet,PasswordLastSet显示扩展属性的值
组织可以使用 AD 扩展属性来存储有关用户的附加信息。例如,O365许可信息可以存储在ExtensionAttribute1中。要查看此信息,请使用以下 cmdlet:
Get-ADUser -Identity “Abbey.Crawford” -Properties * | Select sAMAccountName, extensionAttribute1对输出进行排序
要使用特定属性对 Get-ADUser 命令的输出进行排序,请使用以下命令:
Get-ADUser -Filter * | Select Name | Sort-Object -Property Name将数据导出到 CSV 文件
示例1
以下命令将查找过去 180 天内创建的所有用户帐户,按名称对它们进行排序,并将有关它们的选定信息导出到 CSV 文件:
Get-ADUser -filter * -properties * | Where-Object { $_.created -gt (get-date).AddDays(-180)} | select-object Name, Created | sort Name | export-csv C:\Accounts.csv -NoTypeInformation示例2
以下命令查找特定 OU 中的所有用户并将有关他们的选定详细信息输出到 CSV 文件:
这是 CSV 文件:
结论
Get-ADUser 命令是一种查找一个或多个满足特定条件的用户的通用方法。您可以控制显示哪些用户属性以及信息的排序方式,并将输出导出到 CSV 文件。
如果您对更全面的 Active Directory 和 Azure AD 管理解决方案感兴趣,请查看 Netwrix GroupID。它提供了更先进的管理 shell,也与 PowerShell 完全兼容。




































