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
ご覧のとおり、ActiveDirectoryモジュールが読み込まれています。そうでない場合は、次のコマンドを使用してインポートします:
Import-Module ActiveDirectory
ADグループの管理を可能にするPowerShellコマンドレットを一覧表示しましょう:
Get-Command -Module ActiveDirectory -Name "* Group *"
利用可能なコマンドレットは11個あります:
- 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 グループの説明と表示名を指定する属性。
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グループを作成するときに、任意の属性を入力できます。さまざまなグループ属性の値を設定する最も簡単な方法は、ハッシュテーブルを使用することです。
$ attrs =@ {"mail" ="[email protected]"; "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
一度に多数のユーザーをグループに追加する必要がある場合は、ユーザー名のリストをCSVファイルに保存してから、このファイルをPowerShellにインポートし、単純なPowerShellスクリプトを使用して各ユーザーをグループに追加できます。
>CSVファイルの形式は次のとおりです(ユーザーはユーザーと1行でリストされている必要があります 列ヘッダーとして)。
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 $ _}
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
ユーザーの削除を確認する:
CSVファイルのユーザーリストに従ってグループからユーザーを削除する必要がある場合は、次のコマンドを使用します。
Import-CSV。\users.csv-ヘッダーユーザー| ForEach-Object {Remove-ADGroupMember -Identity‘TestADGroup’ -members$_。users}
Add-ADGroupMember
を使用して、グループからユーザーを自動的に追加または削除するスケジュールされたPowerShellスクリプトを作成できます。 およびRemove-ADGroupMember
コマンドレット。 PowerShellを使用してActiveDirectoryで動的ユーザーグループを作成する方法の詳細をご覧ください。 Get-ADGroupを使用してActiveDirectoryグループを検索する
Get-ADGroup コマンドレットは、ADドメイングループに関する情報を取得するのに役立ちます:
Get-ADGroup'TestADGroup'
このコマンドは、グループの主な属性(DN、グループタイプ、名前、SID)に関する情報を表示します。すべてのグループ属性の値を表示するには、次のコマンドを実行します。
Get-ADGroup'TestADGroup' -properties *
ご覧のとおり、グループの作成と変更の時間、説明などの属性が表示されます。
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' |フィート名
このグループに他のドメイングループが含まれている場合は、再帰を使用してください ネストされたすべてのグループを含むメンバーの完全なリストを表示するパラメーター。
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
特定の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" ="[email protected]"; "displayname" ="ALL MUN Admins"}
Set-ADGroup -Identity MunAdmins –Add $ attrs
ADグループ属性のリストは、
get-adgroup munadmins -Properties *
を使用して取得できます。 または、ADUCコンソールの[属性エディタ]タブから。 Remove-ADGroup:PowerShellを使用してActive Directoryのグループを削除するにはどうすればよいですか?
Active Directoryのグループを削除するには、 Remove-ADGroupを使用します コマンドレット:
Remove-ADGroup -Identity MunSales
グループを削除すると、削除の確認を求められます。削除の確認を無効にするには、確認を追加します スイッチ:
Remove-ADGroup -Identity MunSales –Confirm:$ false
Get-ADObject -Filter {Deleted -eq $ True -and ObjectClass -eq'group' -and Name -like'* MunSales *'} –IncludeDeletedObjects | Restore-ADObject –verbose
-
RSATをインストールせずにPowerShellActiveDirectoryモジュールを展開する
以前の記事の1つで、GPOログオンスクリプトでSet-ADComputerコマンドレットを使用して、現在ログインしているユーザー情報を各ADコンピューターオブジェクトのプロパティに保存する方法を示しました。コメンテーターの1人は、それを行うには、時間がかかる可能性のあるすべてのユーザーコンピューターにWindowsPowerShell用のActiveDirectoryを使用してRSATをインストールする必要があると合理的に指摘しました。 RSATをインストールせずにPowerShellActiveDirectoryモジュールコマンドレットを使用できるかどうかを試してみることにしました。 ユーザ
-
PowerShellを使用したExcelファイルへのデータの読み取りと書き込み
この記事では、PowerShellスクリプトから直接Excelワークシートからデータを読み書きする方法を示します。 ExcelをPowerShellと一緒に使用して、コンピューター、サーバー、インフラストラクチャ、ActiveDirectoryなどに関するさまざまなレポートのインベントリと生成を行うことができます。 別のCOMオブジェクト(コンポーネントオブジェクトモデル)を介して、PowerShellからExcelシートにアクセスできます。これには、Excelがコンピューターにインストールされている必要があります。 Excelセルのデータにアクセスする方法を示す前に、Excelファ