Microsoft Active Directoryは、管理、承認、認証のための一元的なポイントとして機能します。 AD では、ネットワーク リソースへのアクセスは、ユーザー アカウントやコンピューター アカウントなどのセキュリティ プリンシパルに許可され、それらの許可は時間の経過とともに変更される可能性があります。 アクセス管理を簡素化し、セキュリティを向上させるために、中堅・大企業ではActive Directoryのセキュリティグループを使用することが多く、このグループにはユーザーアカウント、コンピューターアカウント、その他のグループを含めることができる。 また、電子メールの配信リストを管理するために、配信グループを使用することもよくあります。 セキュリティグループと配布グループはどちらも一意のセキュリティ識別子(SID)とグローバル一意識別子(GUID)を持っています。
ADUC MMCスナップインは両方のタイプのグループを管理するのに最適ですが、PowerShellはそれらを一括管理する、より効率的な方法です。
ADグループおよびグループ管理にまだ慣れていない場合は、先に進む前にActive Directory Group Management Best Practiceガイドをお読みください。
また、これらのPowerShellスクリプトを使用するには、ADと対話するためのモジュール、Microsoft Windows PowerShell用のActive Directoryモジュールをインポートしなければならないことに留意してください。 このモジュールは Windows Server 2008 R2 で導入され、Windows Server 2012 以降ではデフォルトで有効になっています。 以下のコマンドを実行することで、ADモジュールのコマンドレットの全リストを取得できます。
Get-Command -Module ActiveDirectory
全リストには147個のコマンドレットが含まれていますが、Active Directoryグループに関連しているのはこれらの11個のみです。
- Add-ADGroupMember
- Add-ADPrincipalGroupMembership
- Get-ADGroupMember
- Get-ADPrincipalGroupMembership
- Get-ADGroup
- Get-ADGroupMember
- Get-ADPrincipalGroupMembership
- New-
- Remove-ADGroup
- Remove-ADGroupMember
- Remove-ADPrincipalGroupMembership
- Set-ADGroup
- Add-ADGroupMember
- ADGroupMember
PowerShellによるActive Directoryグループの作成
AD グループを作成するには、次のようにします。 New-ADGroupコマンドレットを使用します。
Get-Command New-ADGroup –Syntax
グループを作成する最も簡単な方法は、次の短いスクリプトを実行することです:
New-ADGroup "Group Name"
システムは、「GroupScope」パラメーターを指定し、新しいグループを作成するよう要求してきます。
たとえば、AD DC上に「品質」というセキュリティグループを作成する場合を考えてみましょう。 以下のパラメータを使用してみましょう。 それは “Production” OU (-Path) にあり、セキュリティ グループ (-GroupCategory) であり、グローバル (-GroupScope) でなければなりません。
New-ADGroup "Quality" -Path "OU=Production,DC=enterprise,dc=com" -GroupCategory Security -GroupScope Global -PassThru –Verbose
Universal Distribution グループを作成したい場合、-GroupCategoryパラメーターを “Distribution” 、-GroupScopeパラメーターを “Universal” へ変更するだけでよい。 また、-Pathパラメーターを変更することでLDAPパスを変更できます。
PowerShellでActive Directoryグループを削除する
ADグループを削除するためには、Remove-ADGroupコマンドレットを使用します。 そのための最も簡単なスクリプトは次のようになります。
Remove-ADGroup -Identity Quality
グループの削除を確認するよう求められます。
Adding Users and Computers to a Group with PowerShell
Add-AdGroupMemberコマンドレットで、ADグループにユーザー追加を行うことが可能です。 たとえば、2 人のユーザー、B.Jackson と E. を追加する必要がある場合。Franklin を “Quality” グループに追加する必要がある場合、スクリプトは次のようになります。
Add-AdGroupMember -Identity Quality -Members B.Jackson, E.Franklin
セキュリティ グループにユーザーを追加したら、次のスクリプトを実行して、ユーザーがメンバーとして表示されていることを確認できます。
Get-ADGroupMember -Identity Quality
「ドメイン管理者」のような別のセキュリティグループや配布グループにユーザーを追加する必要がある場合、-Identityパラメータの値として「ドメイン管理者」を指定します。 あるグループを別のグループのメンバーにする必要がある場合は、-Members パラメータの値にグループ名を指定します。 コンピュータアカウントにも同じ原則が適用されますが、コンピュータアカウント名の末尾にドル記号($)を追加する必要があります。 たとえば、コンピュータ「WKS043」をグループに追加するには、-Memberパラメータの値として「WKS043$」を指定します。
Add-AdGroupMember -Identity Quality -Members WKS043$
Adding a User to Multiple Groups
一度に複数のグループにユーザを追加するには、次のスクリプトを実行します。
"Managers","Quality" | Add-ADGroupMember -Members ` (Read-Host -Prompt "Enter User Name")
ユーザ名の入力を求められます。
CSVファイルからグループにユーザを追加する
多数のユーザをグループに追加する場合、CSVファイルで指定し、そのファイルをインポートすることができます。 なお、CSVファイルのユーザー名のリストには、以下のように「users」列にSamAccountNamesが含まれている必要があります:
CSVファイルからグループへのユーザーの追加は、以下のPowerShellスクリプトを実行してください。
Import-CSV C:\scripts\users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity "Quality" -members $_.users}
あるグループから別のグループへのユーザーのコピー
あるグループから別のグループにすべてのメンバーをコピーしたい場合、以下のスクリプトを実行してください。
Get-ADGroupMember "Quality" | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity "QualityControl" -Members $_}
グループからユーザーまたはコンピューターを削除する
グループからユーザーを削除するには、Remove-ADGroupMemberコマンドレットを使用します:
Remove-ADGroupMember -Identity Quality -Members J.Robinson
グループからコンピューターアカウントを削除するには、-Membersパラメータの値にドル記号($)を最後に含むコンピュータ名を指定してください。
グループから複数のユーザー アカウントを削除する
ADグループから複数のユーザーを削除する簡単な方法は、ユーザー名のリストでCSVファイルを作成し、このスクリプトを使ってグループ オブジェクトからこれらのユーザーを削除することです。
Import-CSV C:\scripts\users.csv -Header users | ForEach-Object {Remove-ADGroupMember -Identity "Quality" -members $_.users}
Removing a User from All Groups
すべてのグループからユーザーを削除するには、このスクリプトを実行します:
Get-ADUser -Identity E.Franklin -Properties MemberOf | ForEach-Object { $_.MemberOf | Remove-ADGroupMember -Members $_.DistinguishedName -Confirm:$false}
このユーザーは “Domain Users” 以外のすべてのグループのメンバーシップを失うので、必要に応じて手動で削除できることを注意してください。
Reporting on Active Directory Groups
PowerShellを使用してグループに関連する多くの一般的なActive Directory管理タスクを実行する方法がわかったので、ADに存在するグループをレポートする方法を見ていきましょう。
ADに存在するすべてのグループを一覧表示するには、以下のスクリプトを使用します:
Get-ADGroup -filter * -properties GroupCategory | ft name,groupcategory
もちろん、ADグループ メンバーやADグループ メンバーシップ変更を確認したいこともあるでしょう。 以下は、それらのより複雑なタスクを実行するための手順へのリンクです。
- How to Monitor Active Directory Group Membership Changes
- How to Get AD User Group Membership Reports
- How to Export Members of a Particular AD Group
- Managing OUs and Moving Their Objects with PowerShell
まとめ
PowerShell スクリプトを使って Active Directory でグループとグループ メンバーシップの管理方法を学習してきました。 は、グループ管理タスクの一部を自分で実行してみてください。 ただし、何か問題が発生したときに簡単に変更をロールバックできるように、Active Directoryのごみ箱機能を有効にすることを忘れないように注意してください。 ADUC MMCスナップインはグループとグループメンバーシップを管理するのに最適ですが、PowerShellはグループを一括管理するのにもっと適していることを覚えておいてください。