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

[玩转系统] 通过 Get-ADGroupMember Powershell Cmdlet 查找组成员

作者:精品下载站 日期:2024-12-14 05:59:29 浏览:13 分类:玩电脑

通过 Get-ADGroupMember Powershell Cmdlet 查找组成员


使用 Active Directory 安全组是快速准确地向用户、计算机和组分配权限的最佳实践。但是如何获得安全组的所有成员的列表呢?

虽然您可以使用 PowerShell cmdlet Get-ADGroup,但组成员将通过其可分辨名称进行标识,从而导致结果难以阅读。更好的选择是使用 Get-ADGroupMember cmdlet。本文提供了此 cmdlet 的语法和许多有用的示例。

使用 Get-ADGroupMember

要获取安全组的所有成员的列表,只需在 PowerShell 窗口中输入 Get-ADGroupMember cmdlet,系统就会提示您输入组名称:

[玩转系统] 通过 Get-ADGroupMember Powershell Cmdlet 查找组成员

获取 ADGroupMember 参数

Get-ADGroupMember cmdlet 接受以下参数:

  • -AuthType
  • -凭证
  • -身份
  • -分区
  • -递归
  • -服务器)

Identity 和 Recursive 参数是最常用的,所以让我们深入研究它们。

身份参数

使用Identity 参数指定要列出其成员的 AD 组。您可以通过其专有名称、GUID、SID 或 SAM 帐户名称来指定组。

为了以更易读的表格格式获得输出,我们将使用以下命令:

Get-ADGroupMember -Identity Office365-E3 | ft

[玩转系统] 通过 Get-ADGroupMember Powershell Cmdlet 查找组成员

递归参数

安全组的成员中可以有其他组;这称为组嵌套。要使用 ADGroupMember cmdlet 查看嵌套组的成员,我们需要使用 Recursive 参数。

例如,假设安全组 TestOrg8-Versacorp 有 5 个成员,它们都是组:工程、财务、营销、运营和销售。在 TestOrg8-Versacorp 上运行不带 Recursive 参数的 Get-ADGroupMember cmdlet 将返回这五个组,但不返回其成员,如下所示:

[玩转系统] 通过 Get-ADGroupMember Powershell Cmdlet 查找组成员

但如果我们添加 Recursive 参数,Get-ADGroupMember cmdlet 将列出所有嵌套组的成员:

Get-ADGroupMember -Identity TestOrg8-Versacorp -Recursive | ft

[玩转系统] 通过 Get-ADGroupMember Powershell Cmdlet 查找组成员

Get-ADGroupMember 的其他示例

让我们回顾一下 Get-ADGroupMember 的一些其他常见用例。

指定要显示的成员属性

如果要准确指定要显示每个组成员的哪些属性,可以使用 Select-Object cmdlet,如下所示:

Get-ADGroupMember -Identity Office365-E3 | Select-Object name, objectClass,distinguishedName

[玩转系统] 通过 Get-ADGroupMember Powershell Cmdlet 查找组成员

将输出限制为具有特定对象类型的成员

如前所述,安全组可以将用户、计算机和嵌套组作为成员。但您可以轻松地将 Get-ADGroupMember cmdlet 的输出限制为这些对象类之一。

如果您只想查看属于 user 对象的成员,请使用以下 cmdlet:

Get-ADGroupMember -Identity VPN | Where-Object {$_.objectClass -eq "user"} | ft

同样,如果您只想查看嵌套组,请使用以下 cmdlet:

Get-ADGroupMember -Identity VPN | Where-Object {$_.objectClass -eq "group"} | ft

如果您只想查看作为成员的计算机对象,请使用以下 cmdlet:

Get-ADGroupMember -Identity VPN | Where-Object {$_.objectClass -eq "computer"} | ft

这是所有三个命令的输出:

[玩转系统] 通过 Get-ADGroupMember Powershell Cmdlet 查找组成员

将组成员信息导出到 CSV 文件

以下是将 Get-ADGroupMember cmdlet 的输出导出到 CSV 文件的方法:

Get-ADGroupMember -Identity Office365-E3 | Get-ADUser -Properties * | Select Name,Mail,department,title,employeeid | Export-csv -Path C:\adgroupmemberslist.csv -NoTypeInformation

这里有三个 cmdlet 在起作用:

  1. Get-ADGroupMember 获取指定 AD 组的成员并将结果传递给第二个 cmdlet (Get-ADUser)。
  2. Get-ADUser 检索这些成员的指定属性(姓名、电子邮件地址、部门、职务和员工 ID),并将结果传递给第三个 cmdlet (Export-csv)。
  3. Export-csv将结果导出到CSV文件,如下图:

[玩转系统] 通过 Get-ADGroupMember Powershell Cmdlet 查找组成员

将成员从特定 OU 导出到 CSV 文件

用户、计算机和组对象都驻留在 Active Directory 内的 OU 中。

运行以下 PowerShell 脚本将组成员从指定 OU 导出到 CSV 文件:

$OrgUnit = 'OU=VPN,DC=milkyway,DC=local'
# Get Active Directory groups from a specific Organizational Unit
$AD_Groups = Get-ADGroup -Filter * -SearchBase $OrgUnit
# Search through AD_Groups variable and get AD group name and member user name
$AD_Group_Members = foreach ($Group in $AD_Groups) {
Get-ADGroupMember -Identity $Group -Recursive | Select-Object @{Name='Group';Expression={$Group.Name}}, @{Name='Member';Expression={$_.Name}}
}
# Export groups and users to csv file from AD_Group_Members variable
$AD_Group_Members | Export-Csv -Path C:\AD_Group_Members.csv -NoTypeInformation

在此脚本中:

  • 第一行定义所需 OU 的路径。
  • 第二行使用 Get-ADGroup cmdlet 获取该 OU 中的所有 AD 组。
  • 然后脚本循环遍历这些 AD 组,获取每个组的名称和成员。
  • 最后一行使用 Export-csv cmdlet 将结果导出到 CSV 文件。

这是生成的 CSV 文件:

[玩转系统] 通过 Get-ADGroupMember Powershell Cmdlet 查找组成员

在交互式表中查看输出

要在交互式表中显示输出,请使用 Out-GridView cmdlet:

Get-ADGroupMember -Identity VPN | Select-Object name, objectClass,distinguishedName | Out-GridView

在结果表中,您可以轻松地对列重新排序、对行排序、过滤数据等等。

[玩转系统] 通过 Get-ADGroupMember Powershell Cmdlet 查找组成员

仅列出全局(或通用)组的成员

要仅列出全局组的成员,请将 Get-ADGroup 与 Get-ADGroupMember 结合使用,如下所示:

Get-ADGroup -Filter {GroupScope -eq "Global"} | Get-ADGroupMember | Select-Object name, objectClass,distinguishedName

[玩转系统] 通过 Get-ADGroupMember Powershell Cmdlet 查找组成员

显示有关组成员的附加信息

Get-ADGroupMember cmdlet 仅返回组的“成员”属性中的信息,该属性主要包含每个成员的 CN、OU 和域名。

如果您需要其他信息,例如成员的电子邮件地址和显示名称,则可以将 Get-ADGroupMember 的输出通过管道传输到 Get-ADUser cmdlet 中,并指定您想要查看的其他属性,如下所示:

Get-ADGroupMember -Identity Office365-E3 | Get-ADUser -Properties DisplayName,EmailAddress | Select Name,DisplayName,EmailAddress,SAMAccountName

[玩转系统] 通过 Get-ADGroupMember Powershell Cmdlet 查找组成员

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

取消回复欢迎 发表评论:

关灯