Comment puis-je savoir si un groupe est un groupe de sécurité ou un groupe de distribution ?

S'il vous plaît Monsieur Script...

Hey, Scripting Guy!

Bienvenue dans cette section TechNet, dans laquelle le Monsieur Script de Microsoft répond aux questions récurrentes sur les scripts d'administration système.

Question du jour : comment puis-je savoir si un groupe est un groupe de sécurité ou un groupe de distribution ?

Comment puis-je savoir si un groupe est un groupe de sécurité ou un groupe de distribution ?Comment puis-je savoir si un groupe est un groupe de sécurité ou un groupe de distribution ?

S'il vous plaît Monsieur Script... Existe-t-il un moyen de savoir si un groupe Active Directory est un groupe de sécurité ou un groupe de distribution ?

-- AW

Bonjour AW. En effet, le script suivant vous indique le type de groupe que vous traitez :

Set objGroup = GetObject _
    ("LDAP://cn=Finance Managers, ou=Finance, dc=Fabrikam, dc=com")
Wscript.Echo objGroup.groupType

Facile, n'est-ce pas ?

En fait, peut-être pas. Le script précédent fonctionne plutôt bien, mais renvoie un type de groupe sous la forme -2147483640 ou -2147483646, voire 4. Mais pourquoi ?

De toute évidence, Active Directory ne stocke pas le type de groupe sous la forme d'une chaîne. En d'autres termes, si vous envoyez un écho de la valeur de l'attribut groupType, vous n'obtiendrez pas en retour une réponse de type Groupe de distribution global, mais l'un des chiffres suivants :

Valeur

Type de groupe

2

Groupe de distribution global

4

Groupe de distribution local de domaine

8

Groupe de distribution universel

-2147483646

Groupe de sécurité global

-2147483644

Groupe de sécurité local de domaine

-2147483640

Groupe de sécurité universel

À titre d'information, les valeurs 2, 4 et 8 identifient respectivement les groupes globaux, locaux de domaine et universels. La valeur -2147483648 identifie les groupes de sécurité. Pour déterminer le type de groupe, ajoutez le premier chiffre (2, 4 ou 8) au second (-2147483648 s'il s'agit d'un groupe de sécurité, et 0 pour un groupe de distribution). Un groupe de distribution local de domaine possède la valeur 4 (4 + 0), et un groupe de sécurité local de domaine, la valeur -2147483644 (4 + -2147483648).

Mais vous n'avez pas besoin de connaître l'origine de ces chiffres. Tout ce que vous devez savoir, c'est la correspondance entre les chiffres et les attributs groupType. Une fois que vous disposez de ces informations, vous pouvez ajouter une instruction Select Case à votre script et identifier avec précision le type de groupe :

Set objGroup = GetObject _
    ("LDAP://cn=Finance Managers, ou=Finance, dc=Fabrikam, dc=com")
Select Case objGroup.GroupType
    Case 2
        Wscript.Echo "This is a global distribution group."
    Case 4
        Wscript.Echo "This is a domain local distribution group."
    Case 8
        Wscript.Echo "This is a universal distribution group."
    Case -2147483646
        Wscript.Echo "This is a global security group."
    Case -2147483644
        Wscript.Echo "This is a domain local security group."
    Case -2147483640
        Wscript.Echo "This is a universal security group."
End Select

Si vous voulez simplement savoir s'il s'agit d'un groupe de sécurité ou d'un groupe de distribution, il vous suffit alors de vérifier si la valeur de groupType est inférieure à 0. Si c'est le cas, il s'agit forcément d'un groupe de sécurité. Voici un script qui exécute justement cette tâche :

Set objGroup = GetObject _
    ("LDAP://cn=Finance Managers, ou=Finance, dc=Fabrikam, dc=com")
If objGroup.groupType < 0 Then
    Wscript.Echo "This is a security group."
Else
    Wscript.Echo "This is a distribution group."
End If
Pour en savoir plus

Consultez les archives de **S'il vous plaît Monsieur Script... site en anglais
**