当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 导出 AD 组成员

作者:精品下载站 日期:2024-12-14 18:37:58 浏览:16 分类:玩电脑

使用 PowerShell 导出 AD 组成员


有时您想要将 Active Directory 组成员导出到 CSV 文件。例如,您必须导出所有 AD 组成员、仅导出特定 OU 或多个组。在本文中,您将了解如何使用 PowerShell 将 AD 组成员身份导出到 CSV 文件。

介绍

Export-ADGroupMembers.ps1 PowerShell 脚本将针对您设置的 distinguishedName 运行。之后,它会将 AD 组(包括成员)导出到 CSV 文件。您可以使用 Microsoft Excel 或支持 CSV 文件扩展名的任何其他应用程序打开 CSV 文件。

该脚本将导出以下信息:

  1. 姓名

  2. 类别

  3. 范围

  4. 会员

注意:Export-ADGroupMembers.ps1 PowerShell 脚本获取 Active Directory 组的成员。成员可以是用户、组和计算机。

导出 Active Directory 组成员 PowerShell 脚本

在开始之前,您需要将文件放置在正确的位置。我们建议在管理服务器或域控制器的(C:)驱动器上创建两个名为ScriptsTemp的文件夹。

下载 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.a-d.site/export-ad-group-members-powershell

    .NOTES
    Written by: ALI TAJRAN
    Website:    www.a-d.site
    LinkedIn:   linkedin.com/in/a-d

    .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 中的可分辨名称:

  1. 启动Active Directory 用户和计算机

  2. 右键单击目标,然后单击属性

  3. 转到属性编辑器选项卡

  4. 在属性列表中查找属性 distuingedName

  5. 双击打开字符串并复制

[玩转系统] 使用 PowerShell 导出 AD 组成员

注意:如果您没有看到属性编辑器选项卡,请单击查看菜单栏中的“Active Directory 用户和计算机”,然后启用高级功能。

将 AD 组成员导出到 CSV

以管理员身份运行 PowerShell。更改脚本文件夹的路径。运行 PowerShell 脚本将 AD 组成员导出到 CSV 文件。等到它完成。

PS C:\> cd c:\scripts
PS C:\scripts> .\Export-ADGroupMembers.ps1

转到脚本文件夹并验证您是否看到 ADGroups_ 文件。使用您喜欢的应用程序打开 CSV 文件。在我们的示例中,它是 Microsoft Excel。

[玩转系统] 使用 PowerShell 导出 AD 组成员

导出 OU 中的 AD 组成员

获取 OU 专有名称并更改第 30 行。在我们的示例中,它是 OU

"OU=Groups,OU=Company,DC=exoip,DC=local"

导出多个 OU 中的 AD 组成员

获取 OU 的 DistinguishedName 并更改第 30 行。在我们的例子中。它是 OU Groups1Groups2

"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。不要忘记关注我们并分享这篇文章。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯