[玩转系统] 如何将 Active Directory 用户导出到 CSV 并构建报告
作者:精品下载站 日期:2024-12-14 13:18:01 浏览:8 分类:玩电脑
如何将 Active Directory 用户导出到 CSV 并构建报告
对于许多 Active Directory (AD) 管理员来说,从 AD 检索用户是 PowerShell 的入口点。 PowerShell 是一个用于询问系统的强大工具,Active Directory 也不例外。使用 PowerShell 搜索并返回 AD 用户仅仅是开始。让我们更进一步,将 Active Directory 用户导出到 CSV!
在本教程中,您将学习如何使用 PowerShell 执行一些基本的 AD 查询并创建方便的报告。使用 PowerShell,您将学习通过重命名列、合并文本字段以及执行计算来格式化输出以开发有价值的报告。
先决条件
本教程将是一个实践演示。如果您想继续操作,请确保您具备以下条件:
- 使用域用户登录加入 AD 的计算机。
- PowerShell - 本教程使用 PowerShell 版本 7.1.4,但任何版本的 PowerShell 都应该可以使用。
- Windows 远程系统管理工具 (RSAT)
熟悉 Get-ADUser
PowerShell Cmdlet
在创建报告之前,您必须首先弄清楚如何找到您想要将 Active Directory 用户导出到 CSV 的 AD 用户。为此,您将使用 Get-ADUser
cmdlet。 Get-ADUser
cmdlet 是 PowerShell ActiveDirectory 模块附带的 PowerShell cmdlet。
打开 PowerShell 控制台并使用 Filter
参数和 *
参数运行 Get-ADUser
cmdlet。将星号与 Filter
参数结合使用可告知 Get-ADUser
返回所有 AD 用户。稍后您将创建更复杂的过滤器。
Get-ADUser -Filter *
默认情况下,Get-ADUser
cmdlet 将返回以下属性:
DistinguishedName
- 用户对象的完整 LDAP 名称。Enabled
- 用户是否已启用,true 或 false。GivenName
- 用户的名字。名称
- 用户的全名。ObjectClass
- AD 对象的类型。ObjectGUID
- AD 对象的 ID。SamAccountName
- 这是 Windows NT4.0 之前的登录名SID
- 另一种类型的对象 ID。Surname
- 用户的姓氏。UserPrincipalName
- 用户的登录名。
在您的报告中,您可能不需要所有这些属性。默认情况下,Get-ADUser
还会返回内置域管理员和来宾帐户。您几乎肯定想排除这些。您将在以下部分中了解如何操作。
使用 SearchBase
参数将搜索限制为 OU
AD 用户有时可能分布在数十个组织单位 (OU)。有时,您需要将搜索限制为仅特定的 OU。为此,您可以使用 SearchBase
参数。 SearchBase
参数允许您指定单个 OU 作为搜索用户的起点。
例如,也许您有一个 ATA-Users OU,其中包含各个部门 OU,如下所示。部门 OU 包含您想要包含在导出到 CSV 中的所有用户帐户。
您可以将 SearchBase
参数定义为 ATA-Users OU 的专有名称 (DN),如下所示,以将搜索限制为 ATA-Users OU 及其内部的所有 OU。
Get-ADUser -Filter * -SearchBase "OU=ATA-Users,DC=ATA,DC=local"
上面的输出为每个用户显示了许多不同的属性,但让我们稍微限制一下,仅显示您可能感兴趣的属性。为此,请仅使用 Select-Object
cmdlet 返回Name
和 UserPrincipalName
属性。
Get-ADUser -Filter * -SearchBase "OU=ATA-Users,DC=ATA,DC=local" | select Name,UserPrincipalName
也许您只想将 Active Directory 用户导出到 Sales OU 中的 CSV。为此,请在 SearchBase
参数中指定 Sales
OU,如下所示。
Get-ADUser -Filter * -SearchBase "OU=Sales,OU=ATA-Users,DC=ATA,DC=local" | select Name,UserPrincipalName
从 Get-ADUser
过滤 AD 用户帐户
到目前为止,您已经通过简单地指定星号来返回所有用户来忽略 Filter
参数。但如果您只需要查询符合特定条件的某些用户,那么 Filter
参数就是您的好帮手。
假设您希望最终将所有 Active Directory 用户导出到 ATA-Users OU 内的 CSV 中,但前提是他们的 Department
AD 属性设置为 Sales
就像下面的示例用户帐户一样。
使用 Get-ADUser
上的 Filter
参数指定 AD 属性 (Department
),运算符 -eq
等于“等于”和 Department
属性 (Sales
) 的值。
Get-ADUser -Filter {Department -eq "Sales"} -SearchBase "OU=ATA-Users,DC=ATA,DC=local"| select Name,UserPrincipalName
如果 ATA-Users OU 中的用户的 Department
属性设置为 Sales
,则 Get-ADUser
将仅返回这些用户。
也许您想在输出中包含 Department
属性。为此,您通常需要将 Department
属性指定为另一个属性,以通过 Select-Object
(select
) cmdlet 显示,如下所示以下。但请注意 Department
属性没有显示。
默认情况下,Get-ADUser
cmdlet 不会返回所有属性。要返回所有非默认属性,您必须使用 Properties
参数。在本例中,请告诉 Get-ADUser
返回 Department
属性。
Get-ADUser -Filter {Department -eq "Sales"} -SearchBase "OU=ATA-Users,DC=ATA,DC=local" -Properties Department | select Name,UserPrincipalName
现在您已经有了一个基本的过滤器,您可以根据需要继续向 Filter
添加更多条件,并将它们与 PowerShell and
和 or
结合起来运营商。例如,下面的 Get-ADUser
将返回位于 Sales
或 Finance
部门的所有启用的 AD 用户。
在本教程的环境中,Steve James 是 Sales
部门的帐户,但他的帐户未启用,因此他的帐户不会通过上面的命令显示。
将 Active Directory 用户导出到 CSV
您现在已经掌握了使用 PowerShell 检索 AD 用户的基础知识。最后一步是将这些 Active Directory 用户导出到 CSV 文件以创建可以共享的报告。
假设您已经构建了 Get-ADUser
命令,并且它返回您想要包含在 CSV 报告中的用户,如下所示。
这个命令:
- 检索 ATA-Users OU 和所有子 OU 中的所有 AD 用户。
- 输出额外的属性,例如
Department
、PasswordLastSet
和PasswordNeverExpires
。 - 限制通过
Select-Object
返回的属性包含在报告中,例如Name
、UserPrincipalName
、Department
以及任何以Password
开头的属性。
请注意此示例中的密码*
。在 Select-Object
中使用星号会告诉 Select-Object
返回以 password
开头的所有属性。
Get-ADUser -Filter * -SearchBase "OU=ATA-Users,DC=ATA,DC=local" -properties Department,PasswordLastSet,PasswordNeverExpires | Select-Object Name,UserPrincipalName,Department,password*
要导出 Active Directory 用户,此命令将返回 CSV,将对象通过管道传送到 Export-Csv
cmdlet。 Export-Csv
cmdlet 是一个 PowerShell cmdlet,允许您将各种对象发送到(本示例中为 AD 用户帐户),然后将这些对象附加为 CSV 行。
要导出上述命令中返回的每个 AD 用户,请附加 | Export-Csv .csv
到末尾。此操作通过管道传输 Select-Object
返回的所有对象,并将它们“转换”为 CSV 文件。
Get-ADUser -Filter * -SearchBase "OU=ATA-Users,DC=ATA,DC=local" -properties Department,PasswordLastSet,PasswordNeverExpires | Select-Object Name,UserPrincipalName,Department,password* | Export-CSV pass_report.csv
您将在下面看到 Export-Csv
创建一个名为 pass_report.csv 的 CSV 文件,其中包含作为对象属性名称的标头以及每个 AD 用户帐户一行。
使用 Select-Object
自定义 CSV 标头
您现在可以生成的报告包含所有必需的信息,但 CSV 标头在语法上不正确并且可能会产生误导。经理可能不知道 UserPrincipalName 是什么,并且列标题包含多个单词且不含空格是良好的英语。
要将 Active Directory 用户导出到 CSV 并创建自定义 CSV 标头,请使用 Select-Object
cmdlet 的计算属性。计算属性功能是您定义自定义属性名称和值的一种方式。
Select-Object
cmdlet 的计算属性功能要求您定义一个包含两个键/值对的哈希表; Name
表示属性的名称,Expression
表示操作原始对象属性值的代码或只是实际的属性名称。
在此示例中,假设您希望 CSV 显示以下标题名称:
登录名
而不是UserPrincipalName
密码上次设置日期
而不是PasswordLastSet
密码永不过期
而不是PasswordNeverExpires
密码上次设置日期
,而不是用短日期表示的PasswordLastSet
。
要进行这些更改,您首先需要为每个属性构建一个哈希表,如下所示。
@{Name="Login Name";Expression="UserPrincipalName"}
@{Name="Password Last Set Date";Expression="PasswordLastSet"}
@{Name="Password Never Expires";Expression="PasswordNeverExpires"}
@{Name="Password Last Set Date";Expression={$_.PasswordLastSet.ToShortDateString()}}
现在您已经有了哈希表,将它们添加到您提供给 Select-Object
cmdlet 的属性列表中,就像典型的属性名称一样。
Select-Object
cmdlet 的 Property
参数接受一个数组。如果您有许多属性要传递,您可以先创建一个数组,然后将该数组传递给 Property
参数,以便于阅读。
$properties = @(
Name,
@{Name="Login Name";Expression="UserPrincipalName"},
Department,
@{Name="Password Last Set Date";Expression="PasswordLastSet"},
@{Name="Password Never Expires";Expression="PasswordNeverExpires"},
@{Name="Password Last Set Date";Expression={$_.PasswordLastSet.ToShortDateString()}}
)
Select-Object -Property $properties
将 Get-ADUser
与上面创建的新 Select-Object
结构相结合,即可得到以下代码片段。
$properties = @(
Name,
@{Name="Login Name";Expression="UserPrincipalName"},
Department,
@{Name="Password Last Set Date";Expression="PasswordLastSet"},
@{Name="Password Never Expires";Expression="PasswordNeverExpires"},
@{Name="Password Last Set Date";Expression={$_.PasswordLastSet.ToShortDateString()}}
)
Get-ADUser -Filter * -SearchBase "OU=ATA-Users,DC=ATA,DC=local" -Properties Department,PasswordLastSet,PasswordNeverExpires | Select-Object -Property $properties | Export-CSV pass_report.csv
完成后,PowerShell 将为您创建一个 CSV 文件,如下例所示。
结论
PowerShell 是用于报告 Active Directory 用户的强大工具。本教程向您展示了如何根据各种条件查找和过滤用户,并仅使用几行代码从该输出创建 CSV 文件。
现在您已经掌握了查询 AD 用户并将 Active Directory 用户导出到 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