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コマンドレットが役立ちます。

名前でグループを検索する

おそらく最も簡単なタスクは、名前に特定のテキストが含まれるグループを見つけることです。たとえば、「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を使用して1行で行うことができます:

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

グループスコープの変更

グループのスコープを変更する必要がある場合(例: グローバルからユニバーサルへ):

Get-ADGroup TechTeam | Set-ADGroup -GroupScope Universal

プロのヒント

ADグループの管理をさらに効率的に行うためのいくつかのヒント:

    1. 複数のグループをクエリする場合は、-Identityではなく-Filterを常に使用すると効率的です

    1. グループにメンバーがいる場合は、グループのスコープを変更できないことを覚えておいてください – まずメンバーを削除してください

    1. 変更を行う際に何が起こるかをプレビューするために-WhatIfパラメータを使用してください

    1. 常にグループ変更を本番環境ではなく、非本番環境で最初にテストしてください

要約

これで、PowerShellを使用してADグループを管理するためのしっかりとした基盤ができたはずです。Active Directoryユーザーとコンピュータのスナップインは単発のタスクには優れていますが、PowerShellはグループを大規模に自動化し、管理する力を提供します。

覚えておいてください – ここに示された例はほんの始まりです。PowerShellのADコマンドレットは非常に強力で柔軟です。これらの基本に慣れてくると、組織のニーズに合わせてより複雑なソリューションを構築できるようになります。

Active Directory PowerShellについてもっと学ぶ必要がありますか?他のチュートリアルをチェックしてください:

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