[玩转系统] Get-ADUser - 如何使用 PowerShell 查找和导出 AD 用户
作者:精品下载站 日期:2024-12-14 03:42:10 浏览:14 分类:玩电脑
Get-ADUser - 如何使用 PowerShell 查找和导出 AD 用户
Active Directory 是我们管理用户帐户的主要来源。管理控制台非常适合查找单个用户,但当我们需要更多用户时,PowerShell 中的 Get-ADUser cmdlet 功能更强大。
它使我们能够快速获取用户选择或从单个或多个用户获取详细信息。这也是将用户帐户或信息导出到 CSV 文件的好方法。
在本文中,我们将了解 PowerShell 中的 get aduser cmdlet。另外,我将为您提供一些有关查找和导出广告用户的有用示例。作为奖励,如果添加了完整的脚本来导出您的 AD 用户。
安装活动目录模块
为了能够在 PowerShell 中使用 Get-ADuser cmdlet,您需要安装 Active Directory 模块。默认情况下,它安装在域控制器上,但在 Windows 10 或 11 上,您将需要安装它。
您可以在 Windows 10 或 11 中运行以下 PowerShell 命令来安装该模块:
Add-WindowsCapability -online -Name “Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0”
在 PowerShell 中使用 Get ADUser 查找用户
Get-ADUser cmdlet 允许我们在 Active Directory 中查找用户帐户并从中提取信息。此 cmdlet 的真正强大之处在于它提供了不同的选项来查找这些用户帐户。
在寻找帐户时,我们有以下选择:
- 身份 - 根据身份查找用户帐户。这将仅返回一个用户帐户
- 过滤器 - 根据查询检索多个对象(用户帐户)
- LDAPFilter - 使用 LDAP 查询字符串来过滤用户帐户。
- SearchBase - 指定要在其中搜索的 Active Directory 路径 (OU)
- SearchScope - 指定您要搜索的深度(基本级别、一级或完整子树)
Identity 参数主要在您知道用户的SAMAccountName
(登录名)时使用。这允许您从 Active Directory 中选择单个用户并查看该帐户的属性。
Get-ADUser -identity arhodes
正如您所看到的,用户返回了一些基本属性。我们可以使用 -properties 参数从用户检索更多信息。稍后我将详细解释如何检索不同的属性,但如果您想查看用户帐户的所有可能信息,请使用以下命令:
Get-ADUser -identity arhodes -Propeties *
使用过滤器
在 Active Directory 中查找用户的更常见方法是使用 -filter
参数。过滤器参数使用PowerShell表达式语言过滤结果。这意味着我们可以在查询中使用以下运算符:
等于
-le小于或等于
-ge大于或等于
-ne不等于
-lt少于然后
-gt更伟大的是
-like喜欢
-notlike不喜欢
-and -or和/或
-not不是
因此,让我们看一下过滤 Active Directory 用户时的几个常用示例。
要按名字或姓氏查找用户,我们可以使用以下过滤器
# Search on first name
Get-ADUser -Filter "GivenName -eq 'Alan'"
# Search on last name:
Get-ADUser -Filter "Surname -eq 'Rhodes'"
另一种选择是将 like 运算符与通配符结合使用。当您知道名称的一部分时,这特别有用。请注意表示通配符的 *
符号。
Get-ADUser -Filter "name -like '*rho*'"
例如,-ge
和 -le
可用于根据失败的登录尝试查找所有用户:
# Find all users that have more then 3 failed login attempts
Get-ADUser -Filter "badpwdcount -ge 3"
要查找特定字段未填写的所有用户,我们可以使用 -notlike
运算符。例如,我们想要检索所有未填写电子邮件地址字段的用户。
将 -notlike
过滤器与通配符结合使用,我们可以搜索电子邮件字段中没有任何数据的所有用户。
Get-ADUser -Filter "Email -notlike '*'" | ft
您可以轻松地将其与 Set-ADUser
cmdlet 结合使用,以使用单个命令更新大量用户。例如我们获取所有没有填写网页属性的用户,并将其设置为公司网站:
Get-ADUser -Filter "homepage -notlike '*'" | Set-ADUser -HomePage "a-d.site"
组合过滤器
我们还可以使用多个表达式来扩展过滤器查询。这使您可以进一步缩小过滤器查询的范围。例如,我们想要找到所有担任“客户经理”的员工。
如果我们使用以下过滤器,那么它将返回具有职位帐户经理的所有用户:
Get-ADUser -Filter "title -eq 'account manager'" | Select Name,Enabled | ft
但问题是,这也包括被禁用的帐户。我们只想要活跃用户,我们对已经离开公司的用户不感兴趣。因此,我们还可以过滤已启用的帐户:
Get-ADUser -Filter "title -eq 'account manager' -and enabled -like 'true'" | Select Name,Enabled | ft
我想与您分享的最后一个过滤器示例是根据日期字段获取用户。假设我们想要找到所有不活动的帐户。
为此,我们可以使用 Active Directory 中的 lastlogon
字段。我们首先需要创建一个日期变量,获取今天的日期并从中减去 30 天。
然后我们可以获取过去 30 天内未登录该域的所有用户:
$date = (Get-Date) - (New-TimeSpan -Days 30)
Get-ADUser -Filter 'lastLogon -lt $date' | ft
获取 ADUser 搜索库
当您的 Active Directory 中有很多用户时,您可能需要缩小搜索范围。为此,我们可以使用 Get-ADUser cmdlet 的 -SearchBase 参数。这允许我们指定要搜索的distinguishedName
(OU 级别)。
要指定我们要搜索的 OU,我们需要从下往上写入 DistinguishedName。因此,该字符串以要搜索的 OU 开头,以域名结尾。
采用以下 Active Directory 结构,我们希望获取 IT OU 中的所有用户:
在本例中,SearchBase
字符串为:
1: IT
2: Amsterdam
3: Sites
4: Lazyadmin
5: NL
"OU=IT,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL"
因此,要获取阿姆斯特丹 IT 部门的所有用户,我们可以使用以下 PowerShell 命令:
Get-ADUser -Filter * -SearchBase "OU=IT,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL" | ft
使用搜索范围
默认情况下,-SearchBase
参数将返回指定 OU 和嵌套 OU 中的所有用户。使用 -SearchScope
参数,我们可以指定要在 Active Directory 树中搜索的深度。
假设我们需要来自阿姆斯特丹 OU 的用户,而不是来自嵌套 OU 的用户。
如果我们使用以下 SearchBase,则返回所有用户,包括来自 IT、营销和生产 OU 的用户:
Get-ADUser -Filter * -SearchBase "OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL" | ft
为了仅获取阿姆斯特丹 OU 中的用户,我们可以使用 SearchScope 参数。这允许我们将 SearchBase 限制为仅当前级别:
Get-ADUser -Filter * -SearchBase "OU=IT,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL" -SearchScope OneLevel | ft
获取 ADUser 属性
使用 Get ADUser cmdlet 时,您可能已经注意到它只会返回用户帐户的几个属性。但您可能知道,用户帐户具有更多属性。
要返回所有属性,我们需要将 -properties 参数添加到 cmdlet:
Get-ADUser -identity arhodes -properties *
这将返回一个长列表,其中包含用户帐户的所有可能属性。现在,这可能是太多信息,因此您可能需要指定您需要的实际字段。
为此,您需要在其后面传递 select 命令,我们在其中指定所需的字段。在属性参数中指定相同的字段,而不是请求所有数据也是一个好主意。
例如,如果您想要全名、职位和电子邮件地址,那么您可以使用以下命令:
Get-ADUser -identity arhodes -properties emailaddress,title | select name,emailaddress,title
选择不同的值
下一个技巧与 Get ADUser cmdlet 并不真正相关,但我经常将其与从 Active Directory 中获取用户信息结合使用。
当您想要导出 Active Directory 中所有可能职位的列表时,可以在 PowerShell 中使用 -Unique 参数。
Get-ADUser -Filter * -Properties title | Select title -Unique
此命令将为您提供您在 Active Directory 中使用过的所有职位。
使用 PowerShell 将 AD 用户导出到 CSV
将 PowerShell 中的结果导出为 CSV 非常常见。我们都经常使用 PowerShell 来检索信息,只是为了在 Excel 中进一步处理它。我已经编写了有关 Export-CSV cmdlet 的完整指南,但我还想为您提供一些使用 Get-ADUser cmdlet 时有用的示例。
要简单地导出所有 AD 用户,我们可以使用以下命令:
Get-ADUser -filter * | Export-CSV c:\temp\users.csv -NoTypeInformation
但正如您会注意到的那样,这并不会真正给出您正在寻找的结果。它将包括所有用户帐户(启用和禁用),而不是我们真正需要的信息。
导出额外字段
所以第一步是指定我们真正想要导出的字段。例如,如果我们想导出姓名、职位、部门和电子邮件地址,我们可以使用以下命令:
Get-ADUser -filter * -properties mail,title,department | select name,title,department,mail | Export-CSV c:\temp\users.csv -NoTypeInformation
仅导出启用的用户
要仅将活动(已启用)用户从 AD 导出到 CSV 文件,我们可以在 PowerShell 中使用以下命令:
# Export all enabled users
Get-ADUser -Filter "Enabled -like 'true'" | Export-CSV c:\temp\users.csv -NoTypeInformation
# OR Export only disabled users
Get-ADUser -Filter "Enabled -like 'False'" | Export-CSV c:\temp\users.csv -NoTypeInformation
完成将 AD 用户导出到 CSV 脚本
我创建了一个 PowerShell 脚本,该脚本将使用最常用的属性将所有 AD 用户导出为 CSV。
运行脚本时,您指定几个选项:
- 是否获取经理的显示名称(默认 true)
- 指定搜索库(OU),默认整个Active Directory
- 获取启用或禁用的帐户或两者(仅默认启用)
- 导出路径 CSV 文件(默认脚本位置)
如果您不指定 searchBase (OU),该脚本将从活动目录中获取所有用户帐户。也可以指定多个 OU:
.\Get-ADusers.ps1 -searchBase "OU=users,OU=Amsterdam,DC=LazyAdmin,DC=Local","OU=users,OU=Oslo,DC=LazyAdmin,DC=Local" -path c:\temp\users.csv
请按照以下步骤使用 PowerShell 脚本导出 AD 用户:
- 从我的 Github 下载完整的导出 AD 用户脚本
- 打开 PowerShell 并导航到脚本
- 运行导出脚本:Get-ADUsers.ps1 -csvpath c:\temp\adusers.csv
完成后,脚本将自动为您打开 Excel。您还可以运行不带 csvpath 参数的脚本,将结果输出到控制台。
param(
[Parameter(
Mandatory = $false,
HelpMessage = "Get the users manager"
)]
[switch]$getManager = $true,
[Parameter(
Mandatory = $false,
HelpMessage = "Enter the searchbase between quotes or multiple separated with a comma"
)]
[string[]]$searchBase,
[Parameter(
Mandatory = $false,
HelpMessage = "Get accounts that are enabled, disabled or both"
)]
[ValidateSet("true", "false", "both")]
[string]$enabled = "true",
[Parameter(
Mandatory = $false,
HelpMessage = "Enter path to save the CSV file"
)]
[string]$CSVpath
)
Function Get-Users {
<#
.SYNOPSIS
Get users from the requested DN
#>
param(
[Parameter(
Mandatory = $true
)]
$dn
)
process{
# Set the properties to retrieve
$properties = @(
'name',
'userprincipalname',
'mail',
'title',
'enabled',
'manager',
'department',
'telephoneNumber',
'office',
'mobile',
'streetAddress',
'city',
'postalcode',
'state',
'country',
'description',
'lastlogondate'
)
# Get enabled, disabled or both users
switch ($enabled)
{
"true" {$filter = "enabled -eq 'true'"}
"false" {$filter = "enabled -eq 'false'"}
"both" {$filter = "*"}
}
# Get the users
Get-ADUser -Filter $filter -Properties $properties -SearchBase $dn | select $properties
}
}
Function Get-AllADUsers {
<#
.SYNOPSIS
Get all AD users
#>
process {
Write-Host "Collecting users" -ForegroundColor Cyan
$users = @()
if ($searchBase) {
# Get the requested mailboxes
foreach ($dn in $searchBase) {
Write-Host "- Get users in $dn" -ForegroundColor Cyan
$users += Get-Users -dn $dn
}
}else{
# Get distinguishedName of the domain
$dn = Get-ADDomain | Select -ExpandProperty DistinguishedName
Write-Host "- Get users in $dn" -ForegroundColor Cyan
$users += Get-Users -dn $dn
}
$users | ForEach {
$manager = ""
If (($getManager.IsPresent) -and ($_.manager)) {
# Get the users' manager
$manager = Get-ADUser -Identity $_.manager | Select -ExpandProperty Name
}
[pscustomobject]@{
"Name" = $_.Name
"UserPrincipalName" = $_.UserPrincipalName
"Emailaddress" = $_.mail
"Job title" = $_.Title
"Manager" = $manager
"Department" = $_.Department
"Office" = $_.Office
"Phone" = $_.telephoneNumber
"Mobile" = $_.mobile
"Enabled" = $_.enabled
"Street" = $_.StreetAddress
"City" = $_.City
"Postal code" = $_.PostalCode
"State" = $_.State
"Country" = $_.Country
"Description" = $_.Description
"Last login" = $_.lastlogondate
}
}
}
}
If ($CSVpath) {
# Get mailbox status
Get-AllADUsers | Sort-Object Name | Export-CSV -Path $CSVpath -NoTypeInformation -Encoding UTF8
if ((Get-Item $CSVpath).Length -gt 0) {
Write-Host "Report finished and saved in $CSVpath" -ForegroundColor Green
# Open the CSV file
Invoke-Item $path
}
else {
Write-Host "Failed to create report" -ForegroundColor Red
}
}
Else {
Get-AllADUsers | Sort-Object Name
}
总结
当需要从 Active Directory 中获取信息时,Get ADUser cmdlet 非常有用。使用不同的过滤器可以让您仅检索真正需要的信息。
要将 AD 用户导出到 CSV,您可以尝试该脚本。您可以根据自己的需要轻松更改它检索的属性。
如果您有任何疑问,请在下面发表评论。
猜你还喜欢
- 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 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][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
[电视剧] [突围] [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