Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

PowerShellを使用したActiveDirectoryグループの管理

Active Directoryユーザーとコンピューター(ADUC)のグラフィカルスナップインは、ActiveDirectoryのセキュリティグループを管理するための唯一のツールではありません。単純なPowerShellコマンドを使用して、ActiveDirectoryドメイン内のユーザーグループを日常的に管理できます。この記事では、PowerShellを使用してADに新しいグループを作成する方法、ユーザーを追加(または削除)する方法、グループユーザーのリストを表示/エクスポートする方法、およびADの管理時によく使用されるその他の便利なコマンドについて説明します。グループ。

ADグループを管理するには、WindowsPowerShell用のActiveDirectoryモジュールを使用できます。 RSAT-AD-PowerShellモジュールは、すべてのバージョンのWindows Server(Windows Server 2008R2以降)で使用でき、Windows10およびWindows11デスクトップにRSAT機能としてインストールできます。

ADモジュールが現在のPowerShellセッションに読み込まれているかどうかを確認します。

Get-Module -Listavailable

PowerShellを使用したActiveDirectoryグループの管理

ご覧のとおり、ActiveDirectoryモジュールが読み込まれています。そうでない場合は、次のコマンドを使用してインポートします:

Import-Module ActiveDirectory

ADグループの管理を可能にするPowerShellコマンドレットを一覧表示しましょう:

Get-Command -Module ActiveDirectory -Name "* Group *"

利用可能なコマンドレットは11個あります:

PowerShellを使用したActiveDirectoryグループの管理

  • Add-ADGroupMember
  • Add-ADPrincipalGroupMembership
  • Get-ADAccountAuthorizationGroup
  • Get-ADGroup
  • Get-ADGroupMember
  • Get-ADPrincipalGroupMembership
  • New-ADGroup
  • 削除-ADGroup
  • 削除-ADGroupMember
  • 削除-ADPrincipalGroupMembership
  • Set-ADGroup

New-ADGroup:PowerShellを使用した新しいADグループの作成

New-ADGroup を使用して、指定したActive Directoryコンテナ(OU)に新しいセキュリティグループを作成します コマンド:

New-ADGroup "TestADGroup" -path'OU =Groups、OU =NY、OU =US、DC =corp、dc =woshub、DC =com' -GroupScope Global -PassThru –Verbose

説明を使用できます およびDisplayName グループの説明と表示名を指定する属性。

PowerShellを使用したActiveDirectoryグループの管理

GroupScopeを使用できます パラメータを使用して、次のタイプのグループのいずれかを設定できます。

  • 0 =DomainLocal
  • 1=グローバル
  • 2=ユニバーサル

次のように配布グループを作成できます。

New-ADGroup "TestADGroup-Distr" -path'OU =Groups、OU =NY、OU =US、DC =corp、dc =woshub、DC =com' -GroupCategory Distribution -GroupScope Global -PassThru –Verbose

配布グループを使用して、電子メールを送信したり、AD権限を付与したりできます。 Exchange配布グループの詳細については、こちらをご覧ください。

ADグループを作成するときに、任意の属性を入力できます。さまざまなグループ属性の値を設定する最も簡単な方法は、ハッシュテーブルを使用することです。

$ attrs =@ {"mail" ="mundmins@woshub.com"; "displayname" ="ALL Munich Admins"}
New-ADGroup -Name MUNAdmins -GroupScope Global -OtherAttributes $ attrs
>

Add-AdGroupMemberを介したActiveDirectoryへのユーザーの追加

Add-AdGroupMember を使用して、ActiveDirectoryグループにユーザーを追加できます。 コマンドレット。新しいグループに2人のユーザーを追加しましょう:

Add-AdGroupMember -Identity TestADGroup -Members user1、user2

PowerShellを使用したActiveDirectoryグループの管理

一度に多数のユーザーをグループに追加する必要がある場合は、ユーザー名のリストをCSVファイルに保存してから、このファイルをPowerShellにインポートし、単純なPowerShellスクリプトを使用して各ユーザーをグループに追加できます。

>

CSVファイルの形式は次のとおりです(ユーザーはユーザーと1行でリストされている必要があります 列ヘッダーとして)。

PowerShellを使用したActiveDirectoryグループの管理

Import-CSV。\users.csv-ヘッダーユーザー| ForEach-Object {Add-AdGroupMember -Identity‘TestADGroup’ -members$_。users}

グループのすべてのメンバー(groupX)を取得し、それらを別のグループ(groupY)に追加するには、次のコマンドを使用します。

Get-ADGroupMember“ GroupX” | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity“ Group-Y” -Members $ _}

ネストされたすべてのグループのメンバーを新しいグループに(再帰的に)コピーする必要がある場合は、次のコマンドを実行します。

Get-ADGroupMember -Identity“ GroupX” -Recursive | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity“ GroupY” -Members $ _}

前回の記事では、あるユーザーからADグループメンバーシップをコピーして、同じグループリストに別のユーザーを追加できるPowerShellスクリプトを示しました。

Windows2016Forestスキーマ以降では、Active Directoryの一時的な(時間ベースの)グループメンバーシップ機能を使用できます。ユーザーを一時的にADグループに追加するには(たとえば、1時間)、次のコマンドを実行します。

$ ttl =New-TimeSpan -Minutes 60
Add-ADGroupMember -Identity "Domain Admins" -Members j.lennon -MemberTimeToLive $ ttl

1時間後、このユーザーはこのセキュリティグループから自動的に削除されます。

Remove-ADGroupMember:PowerShellを使用したADグループからのユーザーの削除

ADグループからユーザーを削除するには、 Remove-ADGroupMemberを使用します コマンドレット。グループから2人のユーザーを削除しましょう:

Remove-ADGroupMember -Identity TestADGroup -Members user1、user2

ユーザーの削除を確認する:

PowerShellを使用したActiveDirectoryグループの管理

CSVファイルのユーザーリストに従ってグループからユーザーを削除する必要がある場合は、次のコマンドを使用します。

Import-CSV。\users.csv-ヘッダーユーザー| ForEach-Object {Remove-ADGroupMember -Identity‘TestADGroup’ -members$_。users}

オンプレミスのActiveDirectoryで動的ユーザーグループを使用することはできません(Azure ADとは異なります)。ただし、 Add-ADGroupMember を使用して、グループからユーザーを自動的に追加または削除するスケジュールされたPowerShellスクリプトを作成できます。 およびRemove-ADGroupMember コマンドレット。 PowerShellを使用してActiveDirectoryで動的ユーザーグループを作成する方法の詳細をご覧ください。

Get-ADGroupを使用してActiveDirectoryグループを検索する

Get-ADGroup コマンドレットは、ADドメイングループに関する情報を取得するのに役立ちます:

Get-ADGroup'TestADGroup'

このコマンドは、グループの主な属性(DN、グループタイプ、名前、SID)に関する情報を表示します。すべてのグループ属性の値を表示するには、次のコマンドを実行します。

Get-ADGroup'TestADGroup' -properties *

PowerShellを使用したActiveDirectoryグループの管理

ご覧のとおり、グループの作成と変更の時間、説明などの属性が表示されます。

Get-ADGroupコマンドレットを使用して、AD内のグループをパターンで検索できます。たとえば、次のコマンドを使用して、 adminsというフレーズを含むすべてのADグループを検索できます。 彼らの名前で:

Get-ADGroup -LDAPFilter“(name =* admins *)” |フォーマット-テーブル

または:

Get-ADGroup -Filter {name -like "* admins *"} -Properties Description、info |名前、samaccountname、Description、infoを選択します

Get-ADGroupを使用すると、グループメンバーのリストを取得できます(メンバーに保存されています) 属性):

Get-ADGroup -Identity "DomainAdmins"-プロパティメンバー| Select-Object-ExpandPropertyメンバー

ただし、 Get-ADGroupMemberを使用する方がはるかに便利です。 グループメンバーシップを取得するためのコマンドレット。

Get-ADGroupMember:ActiveDirectoryグループメンバーを取得およびエクスポートする方法

Get-ADGroupMember コマンドレットを使用すると、ADグループのメンバーを取得できます。これらは、ユーザー、コンピューター、他のグループ、またはマネージドサービスアカウント(MSA / gMSA)の場合があります。

Get-ADGroupMember'TestADGroup'

結果にユーザー名のみを表示するには、次のコマンドを実行します:

Get-ADGroupMember'TestADGroup' |フィート名

PowerShellを使用したActiveDirectoryグループの管理

このグループに他のドメイングループが含まれている場合は、再帰を使用してください ネストされたすべてのグループを含むメンバーの完全なリストを表示するパラメーター。

Get-ADGroupMember ADadmins -recursive |フィート名

特定のグループのメンバーであるアカウントのリストをCSVファイルにエクスポートするには(Excelでさらに使用するため)、次のコマンドを実行します。

Get-ADGroupMember'ADadmins' -recursive | ft samaccountname |アウトファイルc:\ PS \ ADadminsList.csv

グループ内のユーザーに関する情報をテキストファイルにエクスポートできます。 Get-ADUserコマンドレットは、ユーザーの拡張属性を取得するために使用されます。たとえば、アカウント名に加えて、グループユーザーのUserPrincipalName、役職、電話番号を表示できます。

Get-ADGroupMember -Identity ADadmins -recursive | foreach {Get-ADUser $ _ -properties title、OfficePhone | Select-Object title、OfficePhone}

次のように、グループ内のユーザー数を数えることができます:

(Get-ADGroupMember -Identity'domain admins')。Count

PowerShellを使用したActiveDirectoryグループの管理

特定のOU内の空のグループのリストを取得するには、次のコマンドを使用します。

Get-ADGroup -Filter * -Properties Members -searchbase“ OU =NY、OU-US、DC =corp、dc =woshub、DC =com” |ここで、{-$_。membersではありません}|名前を選択

Get-ADGroupMemberコマンドレットを使用して、誰かが特定のADグループに新しいユーザーを追加したことを管理者に通知する単純なPowerShellスクリプトを作成できます。

Set-ADGroup:ActiveDirectorグループ属性の変更

Set-ADGroup コマンドレットを使用すると、任意のActive Directoryグループのプロパティ(属性)を変更できます。たとえば、グループの説明と名前を変更できます。

Set-ADGroup -Identity MunAdmins -Description“ Munich Admins Group”

または:

Get-ADGroup -Identity MunAdmins | Set-ADGroup-Description「MunichAdminsGroup」

Exchange GALから特定のグループを非表示にします:

Set-ADGroup –id MunAdmins -replace @ {hideDLMembership =$ true}

複数のグループ属性を一度に変更できます。 HashTableを使用して変更のリストを設定すると便利です:

$ attrs =@ {"mail" ="munadmins@woshub.com"; "displayname" ="ALL MUN Admins"}
Set-ADGroup -Identity MunAdmins –Add $ attrs

PowerShellを使用したActiveDirectoryグループの管理

ADグループ属性のリストは、 get-adgroup munadmins -Properties *を使用して取得できます。 または、ADUCコンソールの[属性エディタ]タブから。

Remove-ADGroup:PowerShellを使用してActive Directoryのグループを削除するにはどうすればよいですか?

Active Directoryのグループを削除するには、 Remove-ADGroupを使用します コマンドレット:

Remove-ADGroup -Identity MunSales

PowerShellを使用したActiveDirectoryグループの管理

グループを削除すると、削除の確認を求められます。削除の確認を無効にするには、確認を追加します スイッチ:

Remove-ADGroup -Identity MunSales –Confirm:$ false

削除されたグループ(およびその他のADオブジェクト)は、Active Directoryのごみ箱から復元できます:

Get-ADObject -Filter {Deleted -eq $ True -and ObjectClass -eq'group' -and Name -like'* MunSales *'} –IncludeDeletedObjects | Restore-ADObject –verbose


  1. RSATをインストールせずにPowerShellActiveDirectoryモジュールを展開する

    以前の記事の1つで、GPOログオンスクリプトでSet-ADComputerコマンドレットを使用して、現在ログインしているユーザー情報を各ADコンピューターオブジェクトのプロパティに保存する方法を示しました。コメンテーターの1人は、それを行うには、時間がかかる可能性のあるすべてのユーザーコンピューターにWindowsPowerShell用のActiveDirectoryを使用してRSATをインストールする必要があると合理的に指摘しました。 RSATをインストールせずにPowerShellActiveDirectoryモジュールコマンドレットを使用できるかどうかを試してみることにしました。 ユーザ

  2. PowerShellを使用したExcelファイルへのデータの読み取りと書き込み

    この記事では、PowerShellスクリプトから直接Excelワークシートからデータを読み書きする方法を示します。 ExcelをPowerShellと一緒に使用して、コンピューター、サーバー、インフラストラクチャ、ActiveDirectoryなどに関するさまざまなレポートのインベントリと生成を行うことができます。 別のCOMオブジェクト(コンポーネントオブジェクトモデル)を介して、PowerShellからExcelシートにアクセスできます。これには、Excelがコンピューターにインストールされている必要があります。 Excelセルのデータにアクセスする方法を示す前に、Excelファ