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

[玩转系统] 将 AD 组成员与 PowerShell 进行比较

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

将 AD 组成员与 PowerShell 进行比较


我们在 Active Directory 中有两个安全组,我们想要比较这两个组中的成员。比较 AD 组成员并导出结果的最快方法是什么?在本文中,您将了解如何使用 PowerShell 比较两个 AD 安全组的成员。

介绍

如果您有多个成员,您可以在 Active Directory 用户和计算机 (ADUC) 中对它们进行比较。但是,如果您有很多成员,假设有一千个,该怎么办?或者,如果您想精确地比较成员怎么办?

从列表中读取另一个组并将它们与另一个组进行比较并不是万无一失的。您可能会错过某个会员,但这不是您想要的。这就是您想要使用 PowerShell 的时候。

在我们的示例中,我们希望将 AD 组Group_A 和 AD 组Group_B 中的成员进行比较。

  • 来源:Group_A

  • 目标:Group_B

[玩转系统] 将 AD 组成员与 PowerShell 进行比较

我们可以比较的AD成员

比较两个 AD 组的成员适用于所有组范围和组类型:

  • 组范围:域本地/全局/通用

  • 组类型:安全/分发

比较成员将在 AD 组之间交叉进行。例如,如果您在全局安全性中拥有成员,并且想要将成员与另一个通用分发组进行比较,那么它的效果非常好。

在我们的示例中,我们将比较通用安全组和另一个通用安全组的成员。

[玩转系统] 将 AD 组成员与 PowerShell 进行比较

值得一提的是,它会比较成员组中的用户计算机

[玩转系统] 将 AD 组成员与 PowerShell 进行比较

比较两个 AD 组的成员

以管理员身份运行 PowerShell。通过运行 Get-AdGroupMember cmdlet 列出源 AD 组中的成员。

PS C:\> Get-ADGroupMember -Identity "Group_A" | Select-Object Name | Sort-Object Name

Name
----
Abigail Hodges
Amanda Morgan
Finance
Jonathan Fisher
Kevin Grant
Max Fraser
Sebastian Nolan
Simon Berry
Thomas Wilkins
Zoë Roberts

使用 Compare-Object cmdlet 比较组。 Compare-Object cmdlet 将显示这些值:

  • == 对象类型在两个组中

  • 对象类型位于目标组中

这将显示用户的名称

PS C:\> Compare-Object (Get-ADGroupMember "Group_A") (Get-ADGroupMember "Group_B") -Property "Name" -IncludeEqual | Sort-Object Name

Name            SideIndicator
----            -------------
Abigail Hodges  <=
Amanda Morgan   ==
Finance         <=
Grace Rees      =>
Jonathan Fisher <=
Kevin Grant     <=
Max Fraser      <=
Sebastian Nolan <=
Simon Berry     <=
Thomas Wilkins  <=
Zoë Roberts     <=

或者,如果您想要用户的SamAccountName

PS C:\> Compare-Object (Get-ADGroupMember "Group_A") (Get-ADGroupMember "Group_B") -Property "SamAccountName" -IncludeEqual | Sort-Object SamAccountName

SamAccountName  SideIndicator
--------------  -------------
Abigail.Hodges  <=
Amanda.Morgan   ==
Finance         <=
Grace.Rees      =>
Jonathan.Fisher <=
Kevin.Grant     <=
Max.Fraser      <=
Sebastian.Nolan <=
Simon.Berry     <=
Thomas.Wilkins  <=
Zoe.Roberts     <=

将 CSV 文件导出到路径 C:\temp\CompareMembers.csv

PS C:\> Compare-Object (Get-ADGroupMember "Group_A") (Get-ADGroupMember "Group_B") -Property "Name" -IncludeEqual | Sort-Object Name | Export-Csv "C:\temp\CompareMembers.csv" -Encoding UTF8 -NoTypeInformation

过滤两个组中的成员

通过上面的命令并导出,我们就可以过滤掉成员了。但是,最好有两个组(而不是源组或目标组)中的成员的单独列表。

比较两组中的成员

为两个安全组创建一个变量。

PS C:\> $a= Get-ADGroupMember "Group_A"
PS C:\> $b= Get-ADGroupMember "Group_B"

使用-包含运算符并过滤组和目标组中的成员。这将列出目标组和源组中的成员。

PS C:\> $a.name | Where-Object {$b.name -contains $PSItem} | Select-Object @{Name='Name';Expression={$_}} | Sort-Object Name

Name
----
Amanda Morgan

将 CSV 文件导出到路径 C:\temp\CompareMembersBoth.csv

PS C:\> $a.name | Where-Object {$b.name -contains $PSItem} | Select-Object @{Name='Name';Expression={$_}} | Sort-Object Name | Export-Csv "C:\temp\CompareMembersBoth.csv" -Encoding UTF8 -NoTypeInformation

比较源组中的成员

使用-notcontains运算符并过滤的成员。这将列出目标组中缺少的成员。

PS C:\> $a.name | Where-Object {$b.name -notcontains $PSItem} | Select-Object @{Name='Name';Expression={$_}} | Sort-Object Name

Name
----
Abigail Hodges
Finance
Jonathan Fisher
Kevin Grant
Max Fraser
Sebastian Nolan
Simon Berry
Thomas Wilkins
Zoë Roberts

将 CSV 文件导出到路径 C:\temp\CompareMembersSource.csv

PS C:\> $a.name | Where-Object {$b.name -notcontains $PSItem} | Select-Object @{Name='Name';Expression={$_}} | Sort-Object Name | Export-Csv "C:\temp\CompareMembersSource.csv" -Encoding UTF8 -NoTypeInformation

比较目标组中的成员

使用-notcontains运算符并过滤目标的成员。这将列出源组中缺少的成员。

PS C:\> $b.name | Where-Object {$a.name -notcontains $PSItem} | Select-Object @{Name='Name';Expression={$_}} | Sort-Object Name

Name
----
Grace Rees

将 CSV 文件导出到路径 C:\temp\CompareMembersTarget.csv

PS C:\> $b.name | Where-Object {$a.name -notcontains $PSItem} | Select-Object @{Name='Name';Expression={$_}} | Sort-Object Name | Export-Csv "C:\temp\CompareMembersTarget.csv" -Encoding UTF8 -NoTypeInformation

我们确实成功地比较了 AD 组成员。在我们的示例中,我们确实将通用安全组的成员与另一个通用安全组的成员进行了比较。

了解更多:使用 PowerShell 导出 AD 组成员 »

结论

您学习了如何使用 PowerShell 比较两个 AD 组的成员。如果您有多个成员,则可以使用 Active Directory 用户和计算机并比较 AD 组之间的成员。但是,如果您有很多成员并且想要加快工作速度,那么最好的方法是 PowerShell。

您喜欢这篇文章吗?您可能还喜欢将成员从一个 AD 组复制到另一个 AD 组。不要忘记关注我们并分享这篇文章。

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

取消回复欢迎 发表评论:

关灯