Comment renommer un ou pusieurs nom de groupes active directory

Soyez le premier à donner votre avis sur cette source.

Vue 6 523 fois - Téléchargée 186 fois

Description

Devant renommer les groupes AD en rspectant la nouvelle règle de la maison mère, j'ai écrit un petit script qui les recherche et renomme (recherche par filtre définit en début de script par la variable "filter_grp" et qui sera remplacée par la variable "ReplaceTXT".
Ce script ne permet dans l'état que de changer le début du nom des groupes AD.

Source / Exemple :


'---------------------------------------------------------------------------------------------------------
' Recherche les groupes du domaine avec un filtre et les renommer
'---------------------------------------------------------------------------------------------------------
'
' Définition du filtre
'
filter_grp = "G_"
'
'Définition du remplacement
'
ReplaceTXT = "SG-"
'
set netw=createobject("wscript.network")
Set FileSystem = WScript.CreateObject("Scripting.FileSystemObject")
set oshell = createobject("wscript.shell")
'---------------------------------------------------------------------------------------------------------
' Enregistrement d'un fichier LOG
'---------------------------------------------------------------------------------------------------------
SavePathFile = "C:\temp\renomme_groupes_ad_" & filter_grp & ".log"
Set OutPutFileTxt = FileSystem.CreateTextFile( SavePathFile, True)
OutPutFileTxt.WriteLine "Item_Typ;Item_CN;Item_SAMAccountName;Futur Nom"
'---------------------------------------------------------------------------------------------------------
'Find the current LDAP Name
'---------------------------------------------------------------------------------------------------------
Set oRootDSE = GetObject("LDAP://RootDSE")
Set oShell = WScript.CreateObject("WScript.Shell")
sUserName = oShell.Environment("PROCESS").Item("username")
Const ADS_PROPERTY_CLEAR = 1
Const ADS_NAME_INITTYPE_GC = 3
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1779 = 1
strDNSDomain = oRootDSE.Get("defaultNamingContext")
Set objTrans = CreateObject("NameTranslate")
objTrans.Init ADS_NAME_INITTYPE_GC, ""
objTrans.Set ADS_NAME_TYPE_1779, strDNSDomain
strNetBIOSDomain = objTrans.Get(ADS_NAME_TYPE_NT4)
strNetBIOSDomain = Left(strNetBIOSDomain, Len(strNetBIOSDomain) - 1)
strUserNTName = Trim(LogonAccount)
objTrans.Set ADS_NAME_TYPE_NT4, strNetBIOSDomain & "\" & strUserNTName
If Err.Number <> 0 Then
	On Error GoTo 0
	Wscript.Echo "ERROR: Login not found in Active Directory: " & strUserNTName 
Else
	On Error GoTo 0
	strUserDN = objTrans.Get(ADS_NAME_TYPE_1779)
	LDAP_Name = "LDAP://" & strUserDN 
End If 
'---------------------------------------------------------------------------------------------------------
' Main Script
'---------------------------------------------------------------------------------------------------------
Set oContainer=GetObject(LDAP_Name)
EnumerateItems oContainer
OutPutFileTxt.close
'---------------------------------------------------------------------------------------------------------
' EXIT
'---------------------------------------------------------------------------------------------------------
WScript.Quit(0) 
'---------------------------------------------------------------------------------------------------------
'Sub "EnumerateItems"
'---------------------------------------------------------------------------------------------------------
	Sub EnumerateItems(oCont)
	Dim oItem
	On Error Resume Next
	For Each oItem In oCont
		Select Case LCase(oItem.Class)
			Case "group"
				if left(oItem.cn, len(filter_grp)) = filter_grp then
					futurnomgrp = ReplaceTXT & right(oItem.cn, len(oItem.cn)-len(filter_grp))
					OutPutFileTxt.WriteLine "Group" & ";" & oItem.cn & ";" & oItem.samaccountname & ";" & futurnomgrp  & ";" & oItem.distinguishedName
					Set objGroup = GetObject("LDAP://" & oCont.distinguishedName)
					objGroup.movehere "LDAP://" & oItem.distinguishedName,  "cn=" & futurnomgrp
				end if
			Case "organizationalunit", "container"
				EnumerateItems oItem
		End Select
	Next
	End Sub

Conclusion :


Merci à tous ceux qui reconnaîtront un petit bout de script que j'ai pu trouver sur ce site ;-)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.