使用 PowerShell 导出 AD 组成员
有时您想要将 Active Directory 组成员导出到 CSV 文件。例如,您必须导出所有 AD 组成员、仅导出特定 OU 或多个组。在本文中,您将了解如何使用 PowerShell 将 AD 组成员身份导出到 CSV 文件。
介绍
Export-ADGroupMembers.ps1 PowerShell 脚本将针对您设置的 distinguishedName 运行。之后,它会将 AD 组(包括成员)导出到 CSV 文件。您可以使用 Microsoft Excel 或支持 CSV 文件扩展名的任何其他应用程序打开 CSV 文件。
该脚本将导出以下信息:
姓名
类别
-
范围
会员
注意:Export-ADGroupMembers.ps1 PowerShell 脚本获取 Active Directory 组的成员。成员可以是用户、组和计算机。
导出 Active Directory 组成员 PowerShell 脚本
在开始之前,您需要将文件放置在正确的位置。我们建议在管理服务器或域控制器的(C:)驱动器上创建两个名为Scripts和Temp的文件夹。
下载 Export-ADGroupMembers.ps1 PowerShell 脚本并将其放置在 C:\Scripts 文件夹中。
确保文件未被阻止,以防止运行脚本时出现错误。请阅读文章运行 PowerShell 脚本时出现未数字签名错误来了解更多信息。
另一种选择是将以下代码复制并粘贴到记事本中。将其命名为 Export-ADGroupMembers.ps1 并将其放置在 C:\scripts 文件夹中。
<#
.SYNOPSIS
Export-ADGroupMembers.ps1
.DESCRIPTION
Export Active Directory group members to CSV file.
.LINK
www.alitajran.com/export-ad-group-members-powershell
.NOTES
Written by: ALI TAJRAN
Website: www.alitajran.com
LinkedIn: linkedin.com/in/alitajran
.CHANGELOG
V1.00, 03/22/2022 - Initial version
V2.00, 03/25/2023 - Added extract contacts and groups + optimization for faster results
#>
# Get year and month for CSV export file
$DateTime = Get-Date -f "yyyyMMddhhmm"
# Set CSV file name
$CSVFile = "C:\temp\ADGroups_" + $DateTime + ".csv"
# Set distinguishedName as searchbase, you can use one DN or multiple DNs
# Or use the root domain like DC=exoip,DC=local
$DNs = @(
"DC=exoip,DC=local"
)
# Create empty array for CSV data
$CSVOutput = @()
# Create empty array for AD groups
$ADGroups = @()
# Loop through DNs
foreach ($DN in $DNs) {
# Add every DN to AD groups
$ADGroups += Get-ADGroup -Filter * -SearchBase $DN
}
# Set progress bar variables
$i = 0
$tot = $ADGroups.count
foreach ($ADGroup in $ADGroups) {
# Set up progress bar
$i++
$status = "{0:N0}" -f ($i / $tot * 100)
Write-Progress -Activity "Exporting AD Groups" -status "Processing Group $i of $tot : $status% Completed" -PercentComplete ($i / $tot * 100)
# Ensure Members variable is empty
$Members = ""
# Get group members which are also groups and add to string
$MembersArr = (Get-ADGroup -filter { Name -eq $ADGroup.Name } -Properties Members ).Members | Get-ADObject | select Name, objectClass, distinguishedName
if ($MembersArr) {
foreach ($Member in $MembersArr) {
$MemDN = $Member.distinguishedName
$UserObj = Get-ADUser -filter { DistinguishedName -eq $MemDN }
if ($UserObj.Enabled -eq $False) {
continue
}
if ($Member.objectClass -eq "user") {
$Members = $Members + ",U-" + $Member.Name
}
elseif ($Member.objectClass -eq "contact") {
$Members = $Members + ",C-" + $Member.Name
}
else {
$Members = $Members + ",G-" + $Member.Name
}
}
# Check for members to avoid error for empty groups
if ($Members) {
$Members = $Members.Substring(1, ($Members.Length) - 1)
}
}
# Set up hash table and add values
$HashTab = $null
$HashTab = [ordered]@{
"Name" = $ADGroup.Name
"Category" = $ADGroup.GroupCategory
"Scope" = $ADGroup.GroupScope
"Members" = $Members
}
# Add hash table to CSV data array
$CSVOutput += New-Object PSObject -Property $HashTab
}
# Export report to CSV file
$CSVOutput | Sort-Object Name | Export-Csv -Encoding UTF8 -Path $CSVFile -NoTypeInformation #-Delimiter ";"第30行:编辑目标distinguishedName。您可以拥有一个 DN 或多个 DN(下面通过不同示例详细介绍)。
获取专有名称
您需要在 PowerShell 脚本中添加可分辨名称值。请按照以下步骤获取 Active Directory 中的可分辨名称:
启动Active Directory 用户和计算机
右键单击目标,然后单击属性
-
转到属性编辑器选项卡
在属性列表中查找属性 distuingedName
双击打开字符串并复制值
注意:如果您没有看到属性编辑器选项卡,请单击查看菜单栏中的“Active Directory 用户和计算机”,然后启用高级功能。
将 AD 组成员导出到 CSV
以管理员身份运行 PowerShell。更改脚本文件夹的路径。运行 PowerShell 脚本将 AD 组成员导出到 CSV 文件。等到它完成。
PS C:\> cd c:\scripts
PS C:\scripts> .\Export-ADGroupMembers.ps1转到脚本文件夹并验证您是否看到 ADGroups_ 文件。使用您喜欢的应用程序打开 CSV 文件。在我们的示例中,它是 Microsoft Excel。
导出 OU 中的 AD 组成员
获取 OU 专有名称并更改第 30 行。在我们的示例中,它是 OU 组。
"OU=Groups,OU=Company,DC=exoip,DC=local"导出多个 OU 中的 AD 组成员
获取 OU 的 DistinguishedName 并更改第 30 行。在我们的例子中。它是 OU Groups1 和 Groups2。
"OU=Groups1,OU=Company,DC=exoip,DC=local",
"OU=Groups2,OU=Company,DC=exoip,DC=local"导出特定组中的 AD 组成员
获取组的distinguishedName 并更改第30 行。在我们的示例中,它是组Pilot。
"CN=Pilot,OU=Groups,OU=Company,DC=exoip,DC=local"导出多个组中的 AD 组成员
获取组的distinguishedName 并更改第30 行。在我们的示例中,它是Pilot组和HR组。
"CN=Pilot,OU=Groups,OU=Company,DC=exoip,DC=local",
"CN=HR,OU=Groups,OU=Company,DC=exoip,DC=local"这是否有助于您将 AD 组成员身份导出到 CSV?
了解更多:将成员从一个 AD 组复制到另一个 AD 组 »
结论
您了解了如何使用 PowerShell 将 AD 组成员导出到 CSV。每个组织都有很多组,将它们导出到 CSV 文件非常好。使用 PowerShell 脚本,您可以选择要导出的 Active Directory 组。
您喜欢这篇文章吗?您可能还喜欢使用 PowerShell 将通讯组成员导出为 CSV。不要忘记关注我们并分享这篇文章。

