Windowsシステム管理者として、Active Directory(AD)グループの管理はおそらく毎日行う作業です。Active Directoryユーザーとコンピュータ(ADUC)MMCスナップインを使用することができますが、複数のドメインでグループを管理したり、グループ管理タスクを自動化する必要がある場合はどうなるでしょうか? それがPowerShellの出番です。
この実践的なチュートリアルでは、PowerShellを使用してADグループをプロのように管理する方法を学びます。実用的な実例を使用して、グループのクエリ、新しいグループの作成、既存のグループの変更方法を学びます。
前提条件
このチュートリアルに従いたい場合は、以下の前提条件を満たしていることを確認してください:
- Active Directoryドメインに参加しているWindowsコンピュータ(Windows 10/11またはWindows Server)
- インストールされたPowerShell Active Directoryモジュール
- 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グループの管理をさらに効率的に行うためのいくつかのヒント:
-
- 複数のグループをクエリする場合は、-Identityではなく-Filterを常に使用すると効率的です
-
- グループにメンバーがいる場合は、グループのスコープを変更できないことを覚えておいてください – まずメンバーを削除してください
-
- 変更を行う際に何が起こるかをプレビューするために-WhatIfパラメータを使用してください
- 常にグループ変更を本番環境ではなく、非本番環境で最初にテストしてください
要約
これで、PowerShellを使用してADグループを管理するためのしっかりとした基盤ができたはずです。Active Directoryユーザーとコンピュータのスナップインは単発のタスクには優れていますが、PowerShellはグループを大規模に自動化し、管理する力を提供します。
覚えておいてください – ここに示された例はほんの始まりです。PowerShellのADコマンドレットは非常に強力で柔軟です。これらの基本に慣れてくると、組織のニーズに合わせてより複雑なソリューションを構築できるようになります。
Active Directory PowerShellについてもっと学ぶ必要がありますか?他のチュートリアルをチェックしてください: