使用 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 將是您最好的幫手。

按名稱查找群組

也許最簡單的任務是查找名稱中包含特定文字的群組。例如,查找所有名稱中包含“Sales”的群組:

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

星號(*)是通配符,可以匹配“Sales”前後的任何字符。此命令將返回所有名稱中包含“Sales”的群組。

按群組類型過濾

也許您只想查看安全群組(而非分發群組)。您可以使用 -and 運算符添加其他過濾條件:

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

現在您將只會看到名稱中包含“Sales”的安全群組。

在特定OU中搜索

需要在特定的組織單位(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. 始終先在非生產環境中測試您的群組變更

摘要

您現在應該對使用 PowerShell 管理 AD 群組有了堅實的基礎。雖然 Active Directory 使用者和電腦管理單元適合進行一次性的任務,但 PowerShell 讓您能夠自動化並大規模管理群組。

請記住—這裡展示的範例僅僅是開始。PowerShell 的 AD Cmdlets 非常強大且靈活。隨著您對這些基礎知識的熟悉,您可以構建更複雜的解決方案來滿足組織的需求。

需要了解更多有關 Active Directory PowerShell 的內容嗎?請查看我們的其他教程:

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