2010-11-29 8 views
1

Quelle est la manière la plus propre (et la plus rapide) d'obtenir TOUS les groupes dont un seul utilisateur est membre. Im utilisant PowerShell 2.0 pour compter les utilisateurs connectés dans Citrix et les diviser en groupes à partir d'Active Directory. Tous les utilisateurs sont membres d'un des sous-groupes d'un groupe appelé "VDI-Billing", mais le nombre de groupes imbriqués entre l'utilisateur et le groupe VDI-Billing n'est pas toujours le même. Je veux donc pouvoir comparer tous les groupes (y compris ceux imbriqués) à la liste des membres du groupe VDI-Billing (1er niveau) afin d'avoir une vue d'ensemble.Obtenir l'appartenance au groupe AD de manière récurrente à l'aide de PowerShell

Exemple:

VDI-facturation a un groupe d'éléments NL-VDI-T-Systems. Cela a plusieurs groupes (qui en eux-mêmes ont plusieurs groupes). Mais la vue d'ensemble doit compter tous les utilisateurs (sous) membres de NL-VDI-T-Systems.

Ainsi, dans la vue d'ensemble que je devrais obtenir: NL-VDI-T-Systems: 22 ITA-VDI-T-Systems: 25 Et ainsi de suite.

Quelqu'un sait-il un petit truc?

Répondre

2

Nous écrivons des scripts qui font cela à mon travail tout le temps! Avec les outils de gestion Quest ActiveRoles, un snapin gratuit facilite le travail avec les objets Active Directory dans Powershell WAY.

  1. Installez les ActiveRoles libres quête Outils de gestion de Quest
  2. Ajouter le PSSnapin à votre profil afin que vous puissiez accéder à tous les outils AD Powershell de la console - Add-PSSnapin Quest.ActiveRoles.ADManagement. Si vous voulez écrire des scipts qui utilisent les outils AD, ajoutez simplement la commande à la première ligne de votre script.
  3. Exécutez la commande suivante pour obtenir tous les groupes directs et imbriqués dont un utilisateur est membre: Get-QADUser 'DOMAIN\USER' | foreach -Process {$_.memberof, $_.nestedmemberof} vous pouvez diriger ceci vers un fichier texte ou CSV si vous le souhaitez en ajoutant les cmdlets Out-CSV ou Out-File à la fin de la commande.

Cela fonctionne comme un charme pour moi. Faites moi savoir si vous avez des questions!

~ Dan

+0

En fait, la commande est "Get-QADUser 'DOMAIN \ USER' | foreach -process {$ _ memberof, $ _ nestedmemberof..}". Désolé pour ça! – thoughtpunch

0

La meilleure façon de le faire est de prendre avantage attribuer des tokenGroups, au lieu d'effectuer l'expansion récursive sur votre propre. Vous pouvez trouver des exemples here et here.

EDIT: A more succinct example

Questions connexes