使用 PowerShell 管理 Active Directory 组:终极指南

作为Windows系统管理员,管理Active Directory(AD)组可能是您每天都要做的事情。虽然您可以使用Active Directory用户和计算机(ADUC)MMC插件,但是当您需要跨多个域管理组或自动执行组管理任务时会发生什么?这就是PowerShell派上用场的地方。

在这个实践教程中,您将学习如何使用PowerShell像专家一样管理AD组。您将学习如何使用实际的现实示例来查询组,创建新组以及修改现有组。

先决条件

如果您想要按照本教程进行操作,请确保您已经具备以下先决条件:

  • 连接到Active Directory域的Windows计算机(Windows 10/11或Windows Server)
  • 具有管理AD组权限的用户帐户

使用PowerShell查询AD组

让我们从一个常见场景开始 – 您是一家公司的新IT管理员,需要审计AD组结构。您的经理想要知道不同部门存在哪些组。在这里,Get-ADGroup cmdlet将成为您的好帮手。

按名称查找组

也许最简单的任务是查找包含特定文本在其名称中的组。例如,要查找所有名称中包含“销售”的组:

Get-ADGroup -Filter 'Name -like "Sales"'

星号 (*) 是通配符,可以匹配“Sales”前后的任何字符。此命令将返回所有名称中包含“Sales”的组。

按组类型过滤

也许您只想查看安全组(而不是分发组)。您可以使用 -and 操作符添加额外的过滤条件:

Get-ADGroup -Filter 'Name -like "Sales" -and GroupCategory -eq "Security"'

现在您只会看到名称中包含“Sales”的安全组。

在特定组织单位中搜索

需要在特定的组织单位(OU)中查找组吗?使用 SearchBase 参数:

Get-ADGroup -Filter * -SearchBase 'OU=Engineering,DC=company,DC=local'

此命令查找工程OU及其子OU中的所有组。

查找最近创建的组

想知道哪些组是在某个日期之后创建的吗?过滤 whenCreated 属性:

Get-ADGroup -Filter 'whenCreated -ge "2023-01-01"'

这将返回在2023年1月1日或之后创建的所有组。

创建新的AD组

现在让我们看看如何创建新组。也许您的公司正在重组,您需要为新部门创建组。

创建安全组

以下是为IT支持人员创建新安全组的方法:

New-ADGroup -Name "IT_Support" `
            -GroupScope Global `
            -GroupCategory Security `
            -Description "Group for IT support staff" `
            -Path "OU=IT,DC=company,DC=local"

这将在IT组织单位中创建一个名为“IT_Support”的全局安全组。

创建分发组

需要一个电子邮件分发组吗?只需更改几个参数:

New-ADGroup -Name "Marketing_News" `
            -GroupScope DomainLocal `
            -GroupCategory Distribution `
            -Description "Group for receiving marketing updates" `
            -Path "OU=Marketing,DC=company,DC=local"

一次创建多个组

有多个相似的组要创建吗?使用循环:

$regions = "North", "South", "East", "West"
foreach ($region in $regions) {
    New-ADGroup -Name "Sales_$region" `
                -GroupScope Global `
                -GroupCategory Security `
                -Description "Sales team for $region region" `
                -Path "OU=Sales,DC=company,DC=local"
}

修改现有组

组织中的事物是不断变化的。组需要重命名,更新描述和修改范围。让我们看看如何处理这些任务。

重命名组

要重命名一个组,您需要更改其名称和samAccountName:

# 首先重命名组对象
Get-ADGroup EngineeringTeam | Rename-ADObject -NewName TechTeam

# 然后更新samAccountName
Get-ADGroup EngineeringTeam | Set-ADGroup -SamAccountName TechTeam

更新组描述

需要更新组的描述吗?使用Set-ADGroup一行代码:

Get-ADGroup TechTeam | Set-ADGroup -Description 'Technical Team for Engineering Projects'

更改组范围

如果您需要更改组的范围(例如从全球到通用):

Get-ADGroup TechTeam | Set-ADGroup -GroupScope Universal

专业提示

以下是一些提示,可以让您的AD组管理更加高效:

    1. 查询多个组时始终使用 `-Filter` 而不是 `-Identity` – 这更高效

    1. 请记住,如果组中有成员,则无法更改组范围 – 请先移除成员

    1. 在进行更改时使用 `-WhatIf` 参数以预览将会发生的情况

    1. 始终先在非生产环境中测试您的组更改

概要

您现在应该已经建立了一个管理 AD 组的 PowerShell 基础。虽然 Active Directory 用户和计算机管理工具适用于一次性任务,但 PowerShell 赋予您自动化和大规模管理组的能力。

请记住 – 这里展示的示例只是个开始。PowerShell 的 AD cmdlet 非常强大和灵活。随着您对这些基础知识越来越熟悉,您可以构建更复杂的解决方案以满足您组织的需求。

想要了解更多关于 Active Directory PowerShell 的知识吗?查看我们的其他教程:

Source: https://adamtheautomator.com/powershell-ad-groups-guide/