1

1 人のユーザーがメンバーであるすべてのグループを取得する最もクリーンな (そして最速の) 方法は何ですか? PowerShell 2.0 を使用して、Citrix にログインしているユーザーをカウントし、Active Directory からグループに分けています。すべてのユーザーは、「VDI-Billing」と呼ばれるグループのサブグループの 1 つのメンバーですが、ユーザーと VDI-Billing グループの間のネストされたグループの数は常に同じではありません。したがって、すべてのグループ (ネストされたものを含む) を取得して、VDI-Billing グループ (第 1 レベル) のメンバーのリストと比較できるようにしたいので、概要を取得します。

例:

VDI-Billing には、メンバー グループ NL-VDI-T-Systems があります。これには複数のグループがあります (それ自体に複数のグループがあります)。ただし、概要では、NL-VDI-T-Systems のすべてのユーザー (サブ) メンバーをカウントする必要があります。

したがって、概要では次のようになります。NL-VDI-T-Systems: 22 ITA-VDI-T-Systems: 25 など。

ちょっとした裏技を知っている人はいますか?

4

2 に答える 2

2

私の職場では、常にこれを行うスクリプトを作成しています。Quest ActiveRoles Management Tools を使用すると、Powershell WAY で Active Directory オブジェクトを簡単に操作できる無料のスナップインが提供されます。

  1. Questから無料のQuest ActiveRoles Management Toolsをインストールします。
  2. コンソールからすべての Powershell AD ツールにアクセスできるように、PSSnapin をプロファイルに追加しますAdd-PSSnapin Quest.ActiveRoles.ADManagement。AD ツールを使用するスクリプトを作成する場合は、スクリプトの最初の行にコマンドを追加するだけです。
  3. 次のコマンドを実行して、ユーザーがメンバーであるすべての直接およびネストされたグループを取得します。必要に応じて、コマンドの最後にまたはコマンドレットをGet-QADUser 'DOMAIN\USER' | foreach -Process {$_.memberof, $_.nestedmemberof}追加して、これをテキスト ファイルまたは CSV にパイプできます。Out-CSVOut-File

これは私にとって魅力のように機能します。ご不明な点がございましたら、お気軽にお問い合わせください。

〜ダン

于 2010-12-11T16:42:39.197 に答える
0

これを行う最善の方法は、独自に再帰的な展開を実行するのではなく、TokenGroups 属性を利用することです。ここここで例を見つけることができます。

編集:より簡潔な例

于 2012-01-01T18:58:17.753 に答える