2011-05-27 2 views
1

Voici ma question.Comment vérifier si un utilisateur appartient à un groupe particulier d'une unité d'organisation particulière dans Powershell

J'ai plusieurs unités d'organisation qui représentent des emplacements physiques, donc c'est structuré comme ceci.

COMPANY.COM \ LOC1 \ Users (user1, user2, user3 etc ...) COMPANY.COM \ LOC2 \ Users (user4, user5, user6 etc ...)

Chaque emplacement a un groupe que l'utilisateur devrait faire partie de et que j'ai besoin de vérifier pour m'assurer que les utilisateurs font partie de ce groupe.

OU LOC1, je dois m'assurer que tous les utilisateurs (utilisateur1, utilisateur2, utilisateur3) dans OU LOC1 font partie du groupe de sécurité LOC1_GRP et sortent ceux qui ne le sont pas.

+0

Qu'avez-vous essayé jusqu'à présent? quel type de bibliothèque/snapin souhaitez-vous utiliser? –

Répondre

2

qu'en est-il Get-QADUser? Vous pouvez filtrer tous les utilisateurs par exemple n'appartenant à un groupe spécifique comme celui-ci:

get-qaduser -searchroot 'company.com/LOC1/Users' | ? {[string]$_.memberof -notmatch 'LOC1_GRP'} 
+1

Je crois .memberof va être un tableau de DNs de groupe, ce qui complique les choses. Je pense que {[string] $ _. Memberof -notmatch 'LOC1_GRP'} peut fonctionner sans avoir à interagir avec tous les DN du groupe vérifiant une correspondance. – mjolinor

+0

@mjolinor: Je pense que vous êtes vrai. J'ai corrigé la réponse. Merci –

+0

@mjolinor: bien sûr, nous avons besoin de 'notmatch', pas sûr que ce soit un tableau. –

0

Juste pour compléter (et corriger) la première réponse:

  1. Quête Cmdlet à la requête Active Directory sont utilisables depuis PowerShell V1.0, mais dans PowerShell V2.0 (W2K8 R2) Microsoft implémenter son propre (il suffit d'importer le module ActiveDirectory)
  2. Attention à l'attribut memberOf dans Active-Directory car il est juste vide lorsque vous créez un utilisateur même si l'utilisateur est membre du groupe d'utilisateurs de domaine (qui est du code dans primaryGrouID) c'est pourquoi je renverse le test.

PS C:\> get-adobject -SearchBase "ou=loc1,dc=company,dc=com" -filter {objectclass -eq "user"} -properties memberof | where {!($_.memberof -match "mygroup")} 
1

Cela devrait faire:

$groupname = "cn=group-blarr,ou=loc1,dc=company,dc=com" 

Get-ADUser -filter {memberof -ne $groupname} -ResultPageSize 0 -SearchBase "ou=loc1,dc=company,dc=com" -Searchscope 2 
Questions connexes