[玩转系统] Get-ADUser:使用 PowerShell 查找 Active Directory 用户信息
作者:精品下载站 日期:2024-12-14 23:13:11 浏览:14 分类:玩电脑
Get-ADUser:使用 PowerShell 查找 Active Directory 用户信息
Get-ADUser PowerShell cmdlet 允许您获取有关 Active Directory 用户及其属性的信息,并在域用户中进行搜索。它是用于从 AD 获取信息的更流行的 PowerShell cmdlet 之一。使用 Get-ADUser cmdlet,您可以获取 AD 用户帐户的任何属性的值、列出具有属性的域用户、将用户报告导出到 CSV 文件,以及使用各种条件来选择和筛选域用户。
Active Directory PowerShell 模块中的 Get-ADUser Cmdlet
这
Get-ADUser
cmdlet 包含在用于与 Active Directory 交互的特殊模块中 - Windows PowerShell 的 Active Directory 模块。 RSAT-AD-PowerShell 模块 cmdlet 使您能够对 AD 对象执行各种操作。
注意。以前,要获取有关 AD 用户帐户属性的信息,您必须使用不同的工具:ADUC 控制台(包括保存的 AD 查询)、VBS 脚本、dsquery 等。所有这些工具都可以轻松地由 Get-ADUser cmdlet 替换。
在此示例中,我们将展示如何使用 Get-ADUser PowerShell cmdlet 获取有关用户密码上次更改时间、密码过期时间以及其他用户属性的信息。
要使用 RSAT-AD-PowerShell 模块,您需要运行提升的 PowerShell 控制台并使用以下命令导入模块:
Import-Module ActiveDirectory
当您部署 Active Directory 域服务 (AD DS) 角色时,RSAT-AD-PowerShell 模块默认安装在 Windows Server 2012(及更高版本)上。要在域成员 Windows Server 主机上安装该模块,请运行以下命令:
Install-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeature
为了在桌面 Windows 10/11 上使用 Get-ADUser cmdlet,您需要安装适当版本的 RSAT。您可以通过设置 -> 应用 -> 可选功能 -> 添加功能 -> RSAT:Active Directory 域服务和轻量级目录服务工具启用 RSAT。
您可以使用 PowerShell 在 Windows 10 和 11 上安装 RSAT AD 模块:
Add-WindowsCapability -online -Name "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0"
如果计算机上未安装 RSAT-AD-PowerShell 模块,那么当您运行 Get-ADUser 命令时,会出现错误:
Get-ADUser: The term 'get-aduser' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
检查该模块是否已安装,如有必要,将其导入到您的 PowerShell 会话中:
Import-Module ActiveDirectory
还有一种方法可以使用 AD-PowerShell 模块,而无需在计算机上安装 RSAT。复制主模块文件并将模块导入 PowerShell 会话就足够了:
Import-Module "C:\PS\AD\Microsoft.ActiveDirectory.Management.dll"
Import-Module "C:\PS\AD\Microsoft.ActiveDirectory.Management.resources.dll"
可以按如下方式获取 Get-ADUser cmdlet 的所有参数的完整列表:
help Get-ADUser
如何使用 Get-ADUser 查找 AD 用户并列出属性?
要使用 Get-ADUser cmdlet,您无需在具有域管理员或委派权限的帐户下运行它。任何授权的 AD 域用户都可以运行 PowerShell 命令来获取大多数 AD 对象属性的值(机密属性除外,请参阅文章本地管理员密码解决方案 - LAPS 中的示例)。如果您需要在不同帐户下运行 Get-ADUser 命令,请使用 -Credential 参数。
要显示所有域用户帐户的列表,请运行以下命令:
Get-ADUser -filter *
重要。不建议在具有大量用户帐户的 Active Directory 域中运行此命令。这会给提供 AD 信息的域控制器带来沉重的负载。
使用 Set-ADUser cmdlet 更改 Active Directory 用户属性。
要显示特定用户的属性,请使用
-Identity
范围。身份可以是用户名、登录名 (SAMAccountName)、DN(专有名称)、SID 或 GUID。
对于同一 AD 用户帐户,以下 PowerShell 命令将返回相同的结果:
Get-ADUser -Identity b.smith
Get-ADUser -Identity "CN=Brian Smith,OU=Users,OU=Berlin,DC=a-d,DC=loc"
Get-ADUser -Identity "Brian Smith"
默认情况下,Get-ADUser cmdlet 仅返回 10 个基本用户属性(超过 120 个用户帐户属性):DistinguishedName、SamAccountName、Name、SID、UserPrincipalName、ObjectClass、帐户状态(启用:根据 UserAccountControl AD 属性为 True/False)等。在这种情况下,cmdlet 的输出不包含有关上次用户密码更改时间的信息。
要在特定域控制器上执行 AD 查询,请使用 -Server 选项:
Get-ADUser -Server DC01.a-d.site -Identity tstuser
如果需要从另一个 AD 域获取用户数据,则需要指定域控制器名称和凭据来访问它:
$ADcred = Get-Credential
Get-ADUSer tstuser -Server DC01.contoso.com -Credential $ADcred
要显示有关所有可用用户属性的详细信息,请运行以下命令:
Get-ADUser -identity tuser -properties *
带有 Properties * 开关的 Get-ADUser cmdlet 会列出所有 AD 用户的属性及其值(包括空属性)。 Active Directory 用户和计算机图形管理单元中提供了类似的用户属性列表 (
dsa.msc
)在属性编辑器选项卡下。
然后我们将格式化 Get-ADUser 输出,以便显示必要的用户属性。例如,您想要显示以下用户属性的值:
密码已过期
密码上次设置
密码永不过期
上次登录时间戳
运行命令:
Get-ADUser tuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires, lastlogontimestamp
现在,在用户数据中,包含有关帐户密码状态(过期:True/False)、上次密码更改日期以及上次用户登录域的时间的信息(
lastlogontimestamp
属性)。要在更方便的表格视图中显示此信息并删除所有不必要的属性,请使用Select-Object -Property和Format-Table:
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires
Get-ADUser -SearchBase:从特定 OU 获取用户
要仅显示特定域容器(组织单位)中的用户,请使用 -SearchBase 参数:
Get-ADUser -SearchBase 'OU=London,DC=a-d,DC=loc' -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires
如果您需要一次从多个 OU 选择用户,请使用以下 PowerShell 脚本:
$OUs = "OU=NY,DC=a-d,DC=com","OU=LA,DC=a-d,DC=com","OU=MA,DC=a-d,DC=com"
$OUs | foreach {Get-ADUser -SearchBase $_ -Filter * |select Name, Enabled}
如何使用 PowerShell 从 AD 获取用户的电子邮件地址?
用户电子邮件地址是 Active Directory 中的用户对象属性之一。要列出用户的电子邮件地址,您必须将 EmailAddress 字段添加到 Get-ADUser cmdlet 的属性中。
Get-ADUser -filter * -properties EmailAddress -SearchBase 'OU=Paris,OU-Fr,DC=a-d,DC=com'| select-object Name, EmailAddress
具有电子邮件地址的已启用用户帐户的列表:
Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Format-Table
要获取没有电子邮件地址的 Active Directory 用户列表:
Get-ADUser -Filter * -Properties EmailAddress | where -Property EmailAddress -eq $null
以下示例允许您将公司电子邮件列表从 AD 导出到 CSV 文件。稍后,您可以将此 CSV 地址列表导入桌面电子邮件客户端,例如 Outlook 或 Mozilla Thunderbird:
Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $env:temp\adress_list.csv
Get-ADUser:使用 PowerShell 将 Active Directory 用户导出到 CSV
具有属性的域用户的结果列表可以导出到文本文件:
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:\temp\users.txt
或者您可以将 AD 用户列表导出到 CSV 文件:
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | where {$_.name -like "*Dmitry*"} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:\tmp\user-passwords-expires.csv -Append -Encoding UTF8
AD用户列表可以使用PowerShell直接导出到Excel文件。
Get-ADUser 过滤器示例
使用-过滤器开关,您可以按一个或多个属性过滤用户帐户列表。这对于搜索属性与指定条件匹配的 AD 用户非常有用。 Active Directory 用户的特定属性值可以指定为此参数的参数。当您使用
-Filter
参数时,Get-ADUser cmdlet 将仅显示符合筛选条件的用户。
例如,我想列出名称包含“Dmitry”的活动(已启用)用户帐户。下面的例子使用了多个过滤器;您可以使用逻辑 PowerShell 比较运算符组合条件。在此示例中,用户属性必须满足两个过滤条件(-和):
Get-AdUser -Filter "(Name -like '*Dmitry*') -and (Enabled -eq 'True')" -Properties * |select name,enabled
所有 PowerShell 逻辑运算符均可用于选择用户属性的值 (
-eq
,
-ne
,
-gt
,
-ge
,
-lt
,
-le
,
-like
,
-notlike
,
-and
,
-or
, ETC。)
此外,您还可以使用 Sort-Object cmdlet 按特定用户属性对结果用户列表进行排序。您还可以使用 Where-Object cmdlet 一次指定多个过滤条件。
Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires -SearchBase 'OU=NY,DC=a-d,DC=com'| where {$_.name -like "*Dmitry*" -and $_.Enabled -eq $true} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires
因此,您可以获得具有任何必要的 Active Directory 属性的用户列表。
要同时按多个属性(legacyExchangeDN、proxyAddresses、SAMAccountName、Surname、DisplayName、SamAccountName、physicalDeliveryOfficeName、RDN 和 msExchMailNickname)搜索用户,您可以使用模糊名称解析 (
ANR
) 特征:
Get-ADUser -Filter {anr -eq 'John'} | select Name
提示。使用 Get-ADUser 查找 Active Directory 用户时,从性能角度来看,使用 Filter 属性指定条件优于使用 Where-Object cmdlet 的管道。在这种情况下,选择结果的过滤将在域控制器上执行,并且较小的数据集将通过网络传输到您的计算机。
您可以在 Get-ADUser 查询中使用 LDAP 筛选器。 LDAP 过滤器是使用-LdapFilter 属性指定的。
Get-ADUser -LDAPFilter '(&(department=it)(title=sysops))'
PowerShell 获取 ADUser 示例
让我们展示一些更有用的 PowerShell 命令示例,用于使用各种过滤器查询 Active Directory 用户。您可以将它们组合起来以获得所需的 AD 用户对象列表:
显示名称以 Joe 开头的 AD 用户:
Get-ADUser -filter {name -like "Joe*"}
您可以使用 PowerShell 计算 Active Directory 中的用户帐户总数:
Get-ADUser -Filter {SamAccountName -like "*"} | Measure-Object
查找禁用的 Active Directory 用户帐户:
Get-ADUser -Filter {Enabled -eq "False"} | Select-Object SamAccountName,Name,Surname,GivenName | Format-Table
您可以使用以下命令检查 Active Directory 用户帐户创建日期:
get-aduser -Filter * -Properties Name, WhenCreated | Select name, whenCreated
您可以获取过去 24 小时内新创建的 Active Directory 用户的列表:
$lastday = ((Get-Date).AddDays(-1))
Get-ADUser -filter {(whencreated -ge $lastday)}
列出密码过期的帐户(您可以在域密码策略中配置密码过期选项):
Get-ADUser -filter {Enabled -eq $True} -properties name,passwordExpired| where {$_.PasswordExpired}|select name,passwordexpired
您可以使用 Get-ADUser 和 Add-ADGroupMember cmdlet 创建动态 AD 用户组(取决于城市、职位、部门等)。
任务:对于存储在文本文件中的用户帐户列表(每行一个帐户),您需要从 AD 中获取用户的公司名称并将其保存到 CSV 文件(您可以轻松地将此 CSV 文件导入到 Excel 中)。
Import-Csv c:\ps\users_list.csv | ForEach {
Get-ADUser -identity $_.user -Properties Name, Company |
Select Name, Company |
Export-CSV c:\ps\users_ad_list.csv -Append -Encoding UTF8
}
过去 90 天内未更改域密码的用户:
$90_Days = (Get-Date).adddays(-90)
Get-ADUser -filter {(passwordlastset -le $90_days)}
查找不活动的用户帐户(超过 180 天未登录域)。 lastLogonTimestamp 属性用于获取用户的域登录历史记录:
$LastLogonDate= (Get-Date).AddDays(-180)
Get-ADUser -Properties LastLogonTimeStamp -Filter {LastLogonTimeStamp -lt $LastLogonDate } | ?{$_.Enabled -eq $True} | Sort LastLogonTimeStamp| FT Name, @{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}} -AutoSize
要从 Active Directory 获取用户的照片并将其保存到 jpg 文件,请运行以下命令:
$usr = Get-ADUser sjoe -Properties thumbnailPhoto
$usr.thumbnailPhoto | Set-Content sjoe.jpg -Encoding byte
要获取用户帐户所属的 AD 组列表:
Get-AdUser sjoe -Properties memberof | Select memberof -expandproperty memberof
列出 OU 中属于特定域安全组成员的用户:
Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=a-d,DC=com' -Filter * -properties memberof | Where-Object {($_.memberof -like "*CEO*")}
列出 OU 中属于特定域安全组成员的用户:
Get-ADUser -SearchBase 'OU=Rome,OU=Italy,DC=a-d,DC=com' -Filter * -properties memberof | Where-Object {($_.memberof -like "*CEO*")}
列出 OU 中的所有用户,特定组的成员除外:
$Users = Get-ADUser -filter * -SearchBase ‘OU=Berlin,DC=a-d,DC=com’ -properties memberOf
ForEach ($User In $Users)
{
$Groups = -join @($User.memberOf)
If ($Groups -notlike '*Domain Admins*')
{
$User.Name
}
}
将具有组织单位名称的 AD 用户列表导出到 Out-GridView 表:
get-aduser -filter * -Properties cn,canonicalname | select name,userprincipalname,@{Name="OU";expression={$_.Canonicalname.substring(0,$_.canonicalname.length-$_.cn.length)}}| Out-GridView
检查AD用户帐户是否存在:
$SamAccountName='jbrown'
if (@(Get-ADUser -Filter { SamAccountName -eq $SamAccountName }).Count -eq 0)
{ Write-Host "User $SamAccountName doesn’t exist"}
列出允许用户登录的域计算机(通过 LogonWorkstations AD 属性进行登录限制)。
Get-ADUser jbrown -Properties LogonWorkstations | Format-List Name, LogonWorkstations
提示。 Get-ADComputer cmdlet 用于获取计算机属性或从 Active Directory 搜索多台计算机。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[短剧] 2025年05月31日 精选+付费短剧推荐58部
[软件合集] 25年5月31日 精选软件66个
[电影] 黄沙漫天(2025) 4K.EDRMAX.杜比全景声 / 4K杜比视界/杜比全景声
[风口福利] 短视频红利新风口!炬焰创作者平台重磅激励来袭
[韩剧] 宝物岛/宝藏岛/金银岛(2025)【全16集】【朴炯植/悬疑】
[电影] 愤怒的牦牛 (2025) 国语中字 4k
[短剧合集] 2025年05月30日 精选+付费短剧推荐56部
[软件合集] 25年5月30日 精选软件26个
[软件合集] 25年5月29日 精选软件18个
[短剧合集] 2025年05月28日 精选+付费短剧推荐38部
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[美图] 2W美女个美女小姐姐,饱眼福
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag