コマンドラインでADグループメンバーシップを確認する方法
ネイティブ ソリューション vs. Netwrix Auditor for Active Directory
正確なActive Directory (AD)グループメンバーシップのチェックは、アクセスレビューの抜けや管理されていない権限、トラブルシューティングの遅延を防ぎます。ネイティブのWindowsおよびADツールはユーザー、グループ、または現在のログオン・トークンを照会できますが、出力の切り捨て、直接メンバーシップのみの結果、ローカルスコープ、Lightweight Directory Access Protocol (LDAP)の命名要件などの制限があります。PowerShellは多数のオブジェクトに対する繰り返しチェックをより効率的に処理します。
Netwrix Auditor for Active Directory
特定のユーザーがどのグループに属しているかを確認するには:
- Netwrix Auditor を実行 → 「Reports」へ移動 → 「Predefined」をクリック → 「Active Directory」セクションを展開 → 「Active Directory - State-in-Time」へ移動 → 「User Accounts - Group Membership」を選択 → 「View」をクリック。
- 「Status」フィールドで「Enabled」を指定し、「Member Type」フィールドに「user」を入力 -> 「View Report」をクリック。
AD グループのメンバーを確認するには:
- Netwrix Auditor を実行 → 「Reports」へ移動 → 「Predefined」をクリック → 「Active Directory」セクションを展開 → 「Active Directory – State-in-Time」へ移動 → 「Group Members」を選択 → 「View」をクリック。
- 次のフィルターを設定します:
- ステータス:有効
- メンバー種別:ユーザー
- グループ パス:グループのパス。特定のグループについて部分パスを指定するには、% をワイルドカード文字として使用するか、ワイルドカードをそのままにしておくとすべてのグループのレポートを表示します。
- 「レポートを表示」をクリックします。
ネイティブ ソリューション
コマンドラインを使用してユーザーの AD グループ メンバーシップを確認するには:
- スタート → ファイル名を指定して実行(または Win + R キーを押す)を選択し、"cmd" と入力してコマンド プロンプトを開きます。
- コマンド ラインで次のコマンドを入力し、グループ メンバーシップを確認したいユーザー アカウントを指定します:
net user username
- 生成されたレポートの末尾に、ユーザーが属しているローカル グループとグローバル グループの一覧が表示されます:
コマンドラインを使用して AD グループのメンバーを一覧表示するには:
- 「スタート → ファイル名を指定して実行」(または Win + R)に移動し、「cmd」と入力してコマンド プロンプトを開きます。
- 必要なグループ名を指定して、次のコマンドを入力します:
net localgroup groupname
- 生成されたレポートの末尾に、グループのメンバー一覧が表示されます:
Windows 10 でローカル ユーザーやグループ メンバーシップを確認する必要がある場合も、NET コマンドが利用できます。
Netwrix Auditor for Active Directory について詳しく知るコマンドラインをいじり回すのではなく、全体像をつかみましょう
ベストプラクティスでは、Active Directory グループを使ってユーザーにアクセス権限を付与することが推奨されています。たとえば、特定のコンピューター、ツール、サーバーへのアクセスなどです。しかし、時間が経つにつれて AD グループの構成は非常に複雑になり、「誰が何にアクセスできるのか」を理解するのが難しくなったり、各ユーザーが必要な権限だけを持つように徹底することが難しくなったりします。IT 管理者は、Windows 10 で AD グループのメンバーを確認する必要があることが多く、また特定のユーザーが所属するすべてのグループを詳細に把握したうえで、その情報を部門のリーダーに提供してアクセス権限のアテステーション(証跡/確認)に用いるか、または管理者自身で分析して、壊れた継承やその他のセキュリティ問題を修正する必要があります。
Active Directory Users and Computers(ADUC)コンソール スナップインを使用すると、対象のユーザーまたはグループを見つけて、オブジェクトのプロパティを深掘りし、「Members」または「Member Of」タブをクリックすることで、AD グループのメンバーシップを確認できます。別の方法として、コマンドラインでグループのメンバーシップを取得することもできます。以下の Active Directory Domain Services(AD DS)パッケージのツールを使用可能です:dsget user および dsquery group 、またはコマンドラインのネイティブ NET コマンドを使うこともできます。ただし、NET USER と NET LOCALGROUP コマンドの結果は解析しにくいです。dsget および dsquery は AD グループのメンバーシップをクエリし、より構造化された出力を提供するために使えますが、これらのコマンドは Windows のサーバー版でのみ動作し、LDAP Data Interchange Format 形式で識別名(distinguished name)を入力する必要があります。最後の選択肢は Get-ADGroupMemberPowerShell の cmdlet を使用することです。この方法には、ある程度のスクリプト作成スキルが必要です。その結果、ネイティブ ツールで Active Directory のグループ メンバーシップを確認するのは難しく、時間がかかりがちです。
Netwrix Auditor for Active Directory は貴重な時間を大幅に節約できます。コマンドラインで AD グループのメンバーシップを確認する代わりに、システム担当者は数回のクリックでグループ メンバーシップの要約を取得できます。さらに Netwrix Auditor は、変更内容、ログオン アクティビティ、Active Directory とグループ ポリシーの構成(非アクティブなユーザー/コンピューター アカウント、Active Directory のオブジェクト権限などを含む)についてもレポートします。起こり得る脅威を通知し、調査を迅速化するための高度な検索機能も提供します。さまざまな事前定義済みレポートを、フィルタリング、エクスポート、サブスクリプション(購読)オプション付きで利用でき、簡単にカスタム レポートも作成できます。この包括的な機能により、変更監視やアクセス制御から、権限レビューや異常な振る舞いの検出まで、多くの日常的な IT 業務が効率化されます。
なぜADグループのメンバーシップを確認するのか
Windowsでは、コマンドラインからグループメンバーシップを確認するいくつかの方法があります。適切な方法は、自分自身、別のユーザー、またはグループを確認するかどうか、そしてネストされたメンバーシップが重要かどうかによります。
ディレクトリからユーザーを削除しても、必ずしもアクセス権が削除されるわけではありません。オフボーディングのチェックが直接のグループメンバーシップのみを確認すると、ネストされたグループ経由のアクセスを見逃し、そのアクセス権は終了すべきアカウント変更後も残り続けます。
異なる役割が異なる理由でこのチェックを実行し、その理由が通常、どのツールが最適かを決定します。
The Netwrix 2026 Data and Identity Security Report によると、誰がアクセス権を持っているかの可視性の欠如が、組織がセキュリティリスクの主な理由として挙げており、回答者の37%がこれを挙げており、他のどの原因よりも多いことがわかりました。
- ヘルプデスクおよびITサポート ユーザーがリソースにアクセスできない理由を確認し、アクセス権を付与すべきグループまで遡ります。
- セキュリティおよびコンプライアンスチームは 実際に機密グループにいる人といるべき人を比較してアクセスレビューを実施します。
これらのツールはすべて対応しますが、ユーザーとグループの数が増えると同じようにはうまく機能しません。
ネイティブのWindowsコマンドでグループメンバーシップを確認する方法
- オフボーディングワークフロー 退職する従業員をディレクトリから削除すると、その従業員のアカウントだけでなく、アクセス権を付与したすべてのグループからも削除されることを確認してください。
- コンプライアンス監査人は レビュー中にユーザーのグループメンバーシップを証拠まで遡って確認し、アクセスが文書化されたポリシーに合致していることを検証し、単に信頼に頼ることはありません。
- AD管理者はグループポリシーオブジェクト(GPOs)と委任された権限を設定します。どちらも個々のアカウントではなくグループに適用されます。
net userでユーザーのグループを確認する
- コマンドプロンプトを開きます。
NETコマンドは、ドメイン参加済みのマシンで一度だけ確認する最速の方法です。どちらもWindowsに組み込まれているコンポーネントを使用し、標準のコマンドプロンプトから実行されます。グループ名が長い場合や結果をスクリプトに渡す必要がある場合にトレードオフが生じます。
3. 出力のLocal Group MembershipsとGlobal Group Membershipsの列を読み取ります。
- ローカルアカウントデータベースの代わりにドメインコントローラーを照会するには、/domainスイッチを付けてnet userを実行します。
net localgroup と net group でグループのメンバーを一覧表示
2. ローカルグループではなくドメイングローバルグループの場合は、net groupを実行します。これはグローバルグループのみを解決するため、ドメインローカルおよびユニバーサルグループは有用な結果を返しません:
- グループ名を指定して net localgroup を実行すると、そのグループのメンバーを確認できます。このコマンドはローカルコンピューターのグループを読み取ります。代わりにプライマリドメインコントローラーを照会するには /domain を追加してください:
Netwrix Directory Managerは、ハイブリッドActive DirectoryとEntra IDでコード不要のjoiner-mover-leaverワークフローを自動化します。デモをリクエスト
/domainなしでは、net localgroupはそのマシンに限定され、ローカル管理者権限を持つユーザーを迅速に確認する方法となります。Microsoftによるコマンドの範囲の説明は明確です:「ワークステーションまたはドメインコントローラーでないサーバーは、そのシステム上で定義されたローカルグループに制限されます。」
長い名前はその出力で切り捨てられます。Microsoft Q&A thread は切り捨てを文書化しており、コンソールウィンドウのサイズ変更は効果がないことを確認しています。20文字の上限は LAN Manager compatibility はActive Directoryが存在するずっと前の数十年前にさかのぼります。
大規模で手動のグループメンバーシップチェックが難しくなる理由
少数のオブジェクトを超えると計算が機能しなくなります
実際には、次のような行が生成されることがあります *GcoFieldServicesEdito*AnimalWelfare_Readers 2つのグループ名が区切りなしで連結されており、管理者が 回避策 を探す原因となります。命名規則が20文字を超える場合、net userは記録のソースではなく簡易確認用として扱い、スクリプトで解析しないでください。出力には 直接のメンバーシップのみ; ネストされたグループは表示されません。
ネイティブコマンドは、1人のユーザーまたは1つのグループを確認するには問題なく機能します。しかし、多くのユーザーと多くのグループにまたがる質問になると機能しなくなります。
深いネストと循環参照
Microsoftの最小権限ガイドラインでは、エンジニアがメンバーサーバーのローカルAdministratorsメンバーシップを取得すると、「展開すると数百、場合によっては数千のローカルAdministrator権限を持つアカウントを明らかにする数十のネストされたグループ」が見つかります。
所有権がありません
Microsoft自身のADグループクリーンアップガイダンスでは、「Active Directory Domain Services(AD DS)ドメイン内のグループの増加、特にセキュリティグループ」を主要な懸念事項として挙げ、所有者がいないことを主なクリーントリガーとしています。
Active Directory Users and Computers (ADUC)でグループメンバーシップを確認する方法
このガイダンスは、「ドメイン内のこれらのグループのメンバーシップを変更できるユーザーは、グループがネストされているすべてのシステムの管理権限を取得できる」と警告しています。Netwrix 2025 Cybersecurity Trends Reportによると、組織の41%が2024年の31%から増加し、手動のITプロセスの自動化を優先事項としています。
メンバーシップを保証できる所有者がいない場合、レビューを行う人は単なるアカウント名のリストから意図を再構築しなければなりません。
Active Directoryはネストの深さ制限を設けておらず、循環参照もブロックしません。グループAがグループBを含み、グループBがグループAを含むことができます。Server Faultの議論によれば、「Active Directoryでこれが起こるのを防ぐものは何もない」とのことです。Microsoftは逆に、「ネストされたグループの数を制限するか、可能であれば全く使用しないように」と管理者に推奨しています。
ユーザーが所属するグループを確認する
ADUCは、コンソールがすでに開いている場合にポイントアンドクリックの経路を提供し、完全で切り捨てられていないグループ名を表示し、ユーザーからグループへ、そして戻ることを可能にします。コンソール(dsa.msc)は、RSATのActive Directory Domain Servicesコンポーネントに付属しており、Windows 11 ProまたはEnterpriseの設定 > システム > オプション機能からインストールできます。
2. 適切な組織単位(OU)でユーザーアカウントを見つけるか、ドメインノードで検索を使用します。
3. アカウントを右クリックしてプロパティを選択し、「メンバー」タブを開きます。
- 次のコマンドを実行してADUCを開きます:
dsa.msc、またはServer Manager > Tools > Active Directory Users and Computersに移動します。
グループに誰がいるかを見る
- メンバータブを開きます。
- グループオブジェクトを見つけて右クリックし、プロパティを選択します。
Administrators や Account Operators などの組み込みグループの場合、追加のオブジェクトを表示する View メニューオプションを有効にし、Builtin コンテナを開いて Members タブを確認してください。
dsget と dsquery を使ったグループメンバーシップの確認方法
ds* ツールは完全な名前を1行に1つずつ返します。出力を別のコマンドに直接パイプできます。また、2つの条件が付いています。
Dsget はオブジェクトの LDAP 識別名 (DN) も必要で、スペースが含まれる場合は引用符で囲みます。
標準のWindows 10または11のワークステーションは、上記のRSAT機能をインストールした後にのみこれらを取得し、Microsoftはdsqueryを「管理者権限のコマンドプロンプトから実行する」ことを要求します。
Member Of タブは memberOf 属性を直接読み取ります。この属性はプライマリグループを除外し、プライマリグループは代わりに primaryGroupId に保存されます(デフォルトはドメインユーザー)。直接のメンバーシップのみを保持します。構築された tokenGroups 属性には完全な推移的リストが含まれますが、ADUC GUI では表示されません。
Dsqueryはオブジェクトを見つけ、そのDNをパイプラインの次のコマンドに渡します。これにより、完全なDNを手入力する必要がなくなります:
手動で入力したDNを参照として、dsgetの構文はこのようになります:
2. -memberof と -expand でメンバーシップを拡張する
3. すべての結果に対してクリーンなアカウント名を取得する
1. dsqueryでオブジェクトを見つける
結果をdsget groupに渡して、生のエントリをすべての直接およびネストされたグループのクリーンなSecurity Account Manager (SAM)アカウント名に変換します:
-memberof スイッチはユーザーが属する即時のグループリストを返します。-expand を追加すると、それらのグループを再帰的に解決し、Microsoftが「グループの完全なクローズセット」と呼ぶものを生成します。この組み合わせにより、スクリプトを書かずに完全な推移的メンバーシップが必要なチェックにdsgetが役立ちます。
whoamiで自分のグループメンバーシップを確認する方法
グループのメンバーを一覧表示する場合も同じパターンが逆に適用され、dsget groupは -members と -expand を代わりに受け入れます:
必要な出力形式でwhoamiを実行してください
この whoami command は、上記のツールよりも狭い質問に答えます。現在のセッションが属するグループを表示します。標準ユーザーは、ドメインに参加しているWindows 10、11、またはServer 2016〜2025の任意のマシンで、昇格なしに実行できます。
Dsqueryはデフォルトで最初の100件の結果のみを返すため、すべてが必要な場合は -limit 0 を追加してください。ADUCのMember Ofタブのように、-memberof はプライマリグループをスキップします。これは、基になる memberOf 属性もそれを除外しているためです。
同じトークンベースの設計が限界でもあります。他のユーザーやリモートマシンを検査できず、トークンは次回のサインインまで固定されたままです。Windowsはこれを直接文書化しており、「ユーザーが次にサインインするまでコンテキストを更新しません」と記載しています。
PowerShellでグループメンバーシップを確認する方法
whoamiはディレクトリをライブで照会するのではなく、ログオン時に作成されたWindows access tokenを読み取ります。このトークンには、ユーザーが所属するすべてのグローバルおよびユニバーサルセキュリティグループのSIDが含まれており、ネストされたものも含まれます。これはADがサインイン時に推移的メンバーシップを平坦化するためです。だからこそ、whoamiはnet userが見逃す暗黙のネストされたメンバーシップを完全な名前で表示します。
配布グループもセキュリティ有効化がないため表示されず、他のドメインのdomain local groups も同様です。SIDから名前への解決をブロックするポリシーでは、結果を返す代わりに「unknown sid type」でコマンドがタイムアウトすることがあります。
ユーザーが所属するすべてのグループを取得する
ActiveDirectoryモジュールは、上記のすべてのツールの1オブジェクトずつの制限を超えます。Get-ADGroupMemberはグループのメンバーを取得し、Get-ADPrincipalGroupMembershipはユーザー、コンピューター、またはサービスアカウントのグループを取得します。
これは、静的トークンや切り詰められたコンソール列ではなく、モジュール自身のディレクトリクエリを通じて解決された、jsmithが所属するすべてのグループを返します。
ネストされたメンバーを含むグループのすべてのメンバーを取得します
ネイティブツールが止まるところから、グループ管理が始まる
/groups 現在のユーザーが所属するグループを一覧表示し、/all ユーザーのセキュリティ識別子(SID)と権限を追加し、/fo 出力を テーブル、リスト 、カンマ区切り値(CSV)形式に切り替えます。グループ名が長い場合はリスト形式を使用し、出力を直接ファイルにリダイレクトしたい場合はCSVを使用してください。
-Recursive は入れ子のグループを個別のアカウントまで解決し、net group や単純な dsget が -expand なしで返す最上位グループのエントリで止まりません。-expand.
ネイティブツールはトラブルシューティングや一時的な検証に適しています。多くのグループでレビューの完了を証明するには、責任者、レビュー記録、管理された変更が必要です。
同じモジュールはまた、グループメンバーの追加または削除をプログラムで処理します。上記のいずれかのコマンドに再帰処理とCSVエクスポートを追加すると、同じ2行のPowerShellチェックが繰り返し可能なレビューとなり、範囲内のすべてのユーザーとグループのメンバーシップを一度に1つずつではなく検証します。
デモをリクエストして、Netwrix Directory ManagerがADグループのメンバーシップを手動チェックから管理され監査されたプロセスに変える方法をご覧ください。
クエリベースのスマートグループは現在のユーザー属性からメンバーシップを自動調整し、承認ワークフローは変更をルーティングし、ネイティブAD権限は中央制御され、スケジュールされた証明はグループの存在理由を実際に知っている人に各レビューを割り当てます。
Netwrix Directory Manager は不要なグループが期限切れとなり、権限が静かに蓄積されないようにこれらの制御を適用します。Fortune 500の約25%を含む14,000以上の組織がMicrosoft環境の管理と保護にNetwrixを使用しています。
ADグループメンバーシップの確認方法に関するよくある質問。
共有する