Netwrix 1Secureは、データとアイデンティティ全体にわたる統合された可視性を提供します。14日間の無料トライアルでフルアクセス可能です。無料トライアルを開始

リソースセンターブログ

PowerShell でグループ内の AD グループとオブジェクトを追加・削除する方法

PowerShell でグループ内の AD グループとオブジェクトを追加・削除する方法

Mar 17, 2023

Microsoft Active Directory は、管理、承認、認証のための集中管理ポイントとして機能します。 AD では、ネットワーク リソースへのアクセスが、ユーザー アカウントやコンピューター アカウントなどの security principals に付与されており、その権限は時間の経過とともに変化し得ます。 アクセス管理を簡素化し、セキュリティを高めるために、中規模および大規模の企業ではよく Active Directory security groups を使用します。これらのグループには、ユーザー アカウント、コンピューター アカウント、その他のグループを含めることができます。 また、メールの配布リストを管理するために分配グループ(distribution groups)を使うこともよくあります。 セキュリティ グループと分配グループの両方に、固有のセキュリティ識別子(SID)と、グローバルに一意な識別子(GUID)があります。

ADUC の MMC スナップインは両方の種類のグループを管理するのに便利ですが、 PowerShell はそれらを一括で管理するための、より効率的な方法です。

AD のグループやグループ管理にまだ慣れていない場合は、先に Active Directory Group Management Best Practice ガイドを読んでから次に進んでください。

また、これらの PowerShell スクリプトを使用するには、AD とやり取りするためのモジュールである「Active Directory Module for Microsoft Windows PowerShell」を読み込む必要があります。このモジュールは Windows Server 2008 R2 で導入されており、Windows Server 2012 以降ではデフォルトで有効になっています。次のコマンドを実行すると、AD モジュールの cmdlet の全一覧を取得できます。:

      Get-Command -Module ActiveDirectory
      

全一覧には 147 個の cmdlet が含まれていますが、そのうち Active Directory のグループに関連するのはこの 11 個だけです。:

PowerShell output listing Active Directory group management cmdlets from the ActiveDirectory module.
  • Add-ADGroupMember
  • Add-ADPrincipalGroupMembership
  • Get-ADAccountAuthorizationGroup
  • Get-ADGroup
  • Get-ADGroupMember
  • Get-ADPrincipalGroupMembership
  • New-ADGroup
  • Remove-ADGroup
  • Remove-ADGroupMember
  • Remove-ADPrincipalGroupMembership
  • Set-ADGroup

PowerShell で Active Directory グループを作成する

AD グループを作成するには New-ADGroup コマンドレットを使用します。次のコマンドを実行すると、その構文を確認できます:

      Get-Command New-ADGroup –Syntax
      
PowerShell syntax for the New-ADGroup cmdlet.

グループを作成する最も簡単な方法は、次の短いスクリプトを実行することです:

      New-ADGroup "Group Name"
      

システムは「GroupScope」パラメーターの指定を求め、その後新しいグループを作成します。ただし、このグループには次のような既定値が設定されます。

  • 「Users」という名前の既定の LDAP コンテナーに作成されます。
  • 「Security」のグループ タイプになります。
  • members、member of、description、email、notes の各フィールドはすべて空になります。

AD DC 上に「Quality」というセキュリティ グループを作成したいとします。次のパラメーターを使用しましょう。「Production」OU(-Path)内にある必要があります。セキュリティ グループである必要があります(-GroupCategory)。また、グローバルである必要があります(-GroupScope)。

      New-ADGroup "Quality" -Path "OU=Production,DC=enterprise,dc=com" -GroupCategory Security -GroupScope Global -PassThru –Verbose
      
A PowerShell console showing the creation of an Active Directory group named

ユニバーサルの配布グループにしたい場合は、単に –GroupCategory パラメーターを「Distribution」に変更し、–GroupScope パラメーターを「Universal」に変更するだけです。–Path パラメーターを変更すれば、LDAP パスも変更できます。

PowerShell で Active Directory グループを削除する

AD グループを削除するには Remove-ADGroup コマンドレットを使用します。最も簡単なスクリプトは次のようになります:

      Remove-ADGroup -Identity Quality
      

グループの削除を確認するよう求められます。

PowerShell でグループにユーザーとコンピューターを追加する

AD グループにユーザーを追加するには Add-AdGroupMember コマンドレットを使用します。たとえば、ユーザー B.Jackson と E.Franklin の 2 名を “Quality” グループに追加する必要がある場合、スクリプトは次のようになります:

      Add-AdGroupMember -Identity Quality -Members B.Jackson, E.Franklin
      

ユーザーをセキュリティ グループに追加したら、下のスクリプトを実行して、メンバーとして一覧に表示されていることを確認できます:

      Get-ADGroupMember -Identity Quality
      
PowerShell output showing details for Active Directory group members Edward Franklin and Bill Jackson.

「Domain Admins」など、別のセキュリティ グループまたは配布グループにユーザーを追加する必要がある場合は、「Domain Admins」を –Identity パラメーターの値として指定します。 あるグループを別のグループのメンバーにする必要がある場合は、グループ名を –Members パラメーターの値として指定します。 同じ考え方はコンピューター アカウントにも当てはまりますが、コンピューター アカウント名の末尾にドル記号($)を追加する必要があります。たとえば、コンピューター 「WKS043」をグループに追加するには、「WKS043$」を –Member パラメーターの値として指定します:

      Add-AdGroupMember -Identity Quality -Members WKS043$
      

ユーザーを複数のグループに追加する

ユーザーを複数のグループに一度に追加するには、次のスクリプトを実行します。

      "Managers","Quality" | Add-ADGroupMember -Members `
    (Read-Host -Prompt "Enter User Name")
      

CSV ファイルからグループにユーザーを追加する

多数のユーザーをグループに追加したい場合は、CSV ファイルでそれらを指定してから、そのファイルをインポートできます。CSV ファイル内のユーザー名のリストには、必ず “users” 列に SamAccountNames が含まれている必要があります。

CSV ファイルからグループにユーザーを追加するには、次の PowerShell スクリプトを実行します:

      Import-CSV C:scriptsusers.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity "Quality" -members $_.users}
      
PowerShell output showing details for four Active Directory group members.

あるグループのユーザーを別のグループにコピーする

あるグループのすべてのメンバーを別のグループにコピーしたい場合は、次のスクリプトを実行します:

      Get-ADGroupMember “Quality” | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity “QualityControl” -Members $_}
      

グループからユーザーまたはコンピューターを削除する

ユーザーをグループから削除するには、次の Remove-ADGroupMember cmdlet を使用します:

      Remove-ADGroupMember -Identity Quality -Members J.Robinson
      
Confirm dialog box asking to perform a

コンピューター アカウントをグループから削除するには、コンピューター名の末尾にドル記号($)を付けて、 -Members パラメーターの値として指定します。

グループから複数のユーザー アカウントを削除する

AD グループから複数のユーザーを削除する簡単な方法は、ユーザー名のリストを含む CSV ファイルを作成し、次のスクリプトを使用してそれらのユーザーをグループ オブジェクトから削除することです:

      Import-CSV C:scriptsusers.csv -Header users | ForEach-Object {Remove-ADGroupMember -Identity "Quality" -members $_.users}
      

ユーザーをすべてのグループから削除する

ユーザーをすべてのグループから削除するには、このスクリプトを実行します:

      Get-ADUser -Identity E.Franklin -Properties MemberOf | ForEach-Object {
  $_.MemberOf | Remove-ADGroupMember -Members $_.DistinguishedName -Confirm:$false
}
      
PowerShell output showing user E.Franklin is a member of the 'Domain Users' group, which is a Security Global group.

ユーザーは「Domain Users」を除くすべてのグループのメンバーシップを失います。「Domain Users」は必要に応じて手動で削除できます。

Active Directory グループのレポート

PowerShell を使って、グループに関連する多くの一般的な Active Directory 管理タスクを実行できるようになったところで、AD に存在するグループをレポートする方法を見ていきましょう:

AD 内のすべてのグループを一覧表示するには、次のスクリプトを使用します:

      Get-ADGroup -filter * -properties GroupCategory | ft name,groupcategory
      
PowerShell output listing Active Directory groups and their consistent 'Security' category.

もちろん、AD グループのメンバーと AD グループのメンバーシップの変更 も確認したいはずです。これらのより複雑な作業を実行するための手順へのリンクはこちらです:

まとめ

PowerShell スクリプトを使って Active Directory でグループとグループ メンバーシップを管理する方法を学んだ今は、いくつかのグループ管理タスクを自分で実行してみてください。ただし注意して、Active Directory の Recycle Bin 機能を有効にする ことを忘れないでください。何か問題が起きた場合でも、変更を簡単に元に戻せます。ADUC MMC スナップインはグループやグループ メンバーシップの管理に優れていますが、グループを大量に管理するなら PowerShell のほうがはるかに適しています。

共有する

もっと詳しく

著者について

Asset Not Found

Jeff Melnick

システムエンジニアリング ディレクター

Jeff は Netwrix における Global Solutions Engineering の元ディレクターです。彼は長年にわたり Netwrix のブログ執筆者であり、講演者、プレゼンターとしても活躍しています。Netwrix のブログでは、Jeff がシステム管理の体験を大きく改善できるライフハックや、役立つヒント、ちょっとしたコツを共有しています。