Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Déplacer 2000 comptes ordinateurs vers 600 OU différentes

3 réponses
Avatar
Lyes
Bonjour

Je dois déplacer 2000 comptes ordinateurs d'une Unité d'organistation active
directory vers 600 Unités d'organisations différentes en fonction du nom des
comptes d'ordinateurs.

voici un exemple :

le cpt wks201-XP*** devra aller dans la sous OU
OU=WKS,OU=computers,OU=201-Rennes,DC=MYDOM,DC=COM
le cpt nbk201-XP*** devra aller dans la sous OU
OU=NBK,OU=computers,OU=201-Rennes,DC=MYDOM,DC=COM
le cpt wks305-2K*** devra aller dans la sous OU
OU=WKS,OU=computers,OU=305-Brest,DC=MYDOM,DC=COM
le cpt nbk305-2K*** devra aller dans la sous OU
OU=nbk,OU=computers,OU=305-Brest,DC=MYDOM,DC=COM

Où wks workstation les 3 chiffres qui suivent sont un code ville 2K/XP je
pense que vous avez compris...

J'ai trouvé sur google le script ci dessous mais j'ignore comment le
personnaliser pour éviter de me coller les 2000 comptes ordinateurs à la main.

For /F "delims=" %i in ('dsquery * -filter
"(&(objectcategory=person)(objectclass=user)(memberof=CN=test,OU=accounts,DC=CSSTEST,DC=local))"') do dsmove -newparent "OU=Test,DC=CS STEST,DC=local" %i

Quelqu'un sait-il comment je dois faire?
Si vous voyez une autre solution pour arriver au résultat je suis ouvert à
toute les solutions.

Merci beaucoup de votre aide
Lyes

3 réponses

Avatar
jbongran
"Lyes" a écrit dans le message de
news:
Bonjour

Je dois déplacer 2000 comptes ordinateurs d'une Unité d'organistation
active
directory vers 600 Unités d'organisations différentes en fonction du nom
des
comptes d'ordinateurs.

voici un exemple :

le cpt wks201-XP*** devra aller dans la sous OU
OU=WKS,OU=computers,OU 1-Rennes,DC=MYDOM,DC=COM
le cpt nbk201-XP*** devra aller dans la sous OU
OU=NBK,OU=computers,OU 1-Rennes,DC=MYDOM,DC=COM
le cpt wks305-2K*** devra aller dans la sous OU
OU=WKS,OU=computers,OU05-Brest,DC=MYDOM,DC=COM
le cpt nbk305-2K*** devra aller dans la sous OU
OU=nbk,OU=computers,OU05-Brest,DC=MYDOM,DC=COM

Où wks workstation les 3 chiffres qui suivent sont un code ville 2K/XP je
pense que vous avez compris...

J'ai trouvé sur google le script ci dessous mais j'ignore comment le
personnaliser pour éviter de me coller les 2000 comptes ordinateurs à la
main.

For /F "delims=" %i in ('dsquery * -filter
"(&(objectcategory=person)(objectclass=user)(memberof=CN=test,OU¬counts,DC=CSSTEST,DC=local))"')
do dsmove -newparent "OU=Test,DC=CS STEST,DC=local" %i

Quelqu'un sait-il comment je dois faire?
Si vous voyez une autre solution pour arriver au résultat je suis ouvert à
toute les solutions.

Merci beaucoup de votre aide
Lyes




Gilles LAURENT et moi même avions répondu à cette question dans votre fil
intitulé "filtrer des ordinateurs par une partie de leur nom"
Sans retour de votre part, j'ai pour ma part consideré que vous aviez eu la
réponse ou au moins les pistes suffisantes...
Merci donc de nous dire où vous en êtes par rapport aux réponses apportées
dans le fil original.

Exemple vite fait d'une fonction a appeler avec le nom de la station en
paramètre et qui retournera la chaine OU complète:
Moveto = NewOu("wks201-XP***")
retournera la chaine:
OU=WKS,OU=computers,OU 1-Rennes,DC=MYDOM,DC=COM

Function NewOu(strComputerName)
NewOu = Null
If Len(strComputerName) < 6 Then
WScript.Echo "Error - The name of the computer " & strComputerName & " is
way too short for me!"
Exit Function
End If
Dim strTemp, strLeftOU, strMiddleOU, strRightOU, strEndDC
strEndDC = ",DC=MYDOM,DC=COM"
strMiddleOU = ",OU=computers,OU="
strLeftOU = "OU=" & Left(UCase(strComputerName), 3)
strTemp = UCase(Mid(strComputerName, 4, 3))
Select Case strTemp
Case "201"
strRightOU = "-Rennes"
Case "305"
strRightOU = "-Brest"
Case Else
WScript.Echo "Error - The computer name " & strComputerName & " has a
city code of '" & strTemp & "' that i didn't recognize yet!"
Exit Function
End Select
strRightOU = strTemp & strRightOU
strTemp = strLeftOU & strMiddleOU & strRightOU & strEndDC
WScript.Echo "Info - The computer " & strComputerName & " will be moved to
" & strTemp
NewOu = strTemp
End Function

Dim strMoveTo
strMoveTo = NewOu("nbk305-2K***")
If IsNull(strMoveTo) Then strMoveTo = "Null"
WScript.Echo "The NewOu function return " & strMoveTo
Avatar
Lyes
Bonjour,

Je vous prie de m'excuser car j'avais republier mon post avec un
titre différent afin de mieux préciser ma demande et j'avais totalement
oublié mon précédent post que je ne surveillais plus depuis.

Je vous remercie bcp de votre réponse je vous ferai part du resultat
rapidement néanmoins ne disposant pas d'environnement de test et étant
soumis à une gpo de restriction logiciel portant entre autre sur les
outils de virtualisation , je vais faire une demande pour obtenir
l'autorisation de créer des OU de test avec des computeraccounts bidon .
Oui je ne fais pas ce que je veux (je suis stagiaire).

Merci beaucoup pour vos nombreuses réponses

Lyes

"jbongran" wrote:

"Lyes" a écrit dans le message de
news:
> Bonjour
>
> Je dois déplacer 2000 comptes ordinateurs d'une Unité d'organistation
> active
> directory vers 600 Unités d'organisations différentes en fonction du nom
> des
> comptes d'ordinateurs.
>
> voici un exemple :
>
> le cpt wks201-XP*** devra aller dans la sous OU
> OU=WKS,OU=computers,OU 1-Rennes,DC=MYDOM,DC=COM
> le cpt nbk201-XP*** devra aller dans la sous OU
> OU=NBK,OU=computers,OU 1-Rennes,DC=MYDOM,DC=COM
> le cpt wks305-2K*** devra aller dans la sous OU
> OU=WKS,OU=computers,OU05-Brest,DC=MYDOM,DC=COM
> le cpt nbk305-2K*** devra aller dans la sous OU
> OU=nbk,OU=computers,OU05-Brest,DC=MYDOM,DC=COM
>
> Où wks workstation les 3 chiffres qui suivent sont un code ville 2K/XP je
> pense que vous avez compris...
>
> J'ai trouvé sur google le script ci dessous mais j'ignore comment le
> personnaliser pour éviter de me coller les 2000 comptes ordinateurs à la
> main.
>
> For /F "delims=" %i in ('dsquery * -filter
> "(&(objectcategory=person)(objectclass=user)(memberof=CN=test,OU¬counts,DC=CSSTEST,DC=local))"')
> do dsmove -newparent "OU=Test,DC=CS STEST,DC=local" %i
>
> Quelqu'un sait-il comment je dois faire?
> Si vous voyez une autre solution pour arriver au résultat je suis ouvert à
> toute les solutions.
>
> Merci beaucoup de votre aide
> Lyes


Gilles LAURENT et moi même avions répondu à cette question dans votre fil
intitulé "filtrer des ordinateurs par une partie de leur nom"
Sans retour de votre part, j'ai pour ma part consideré que vous aviez eu la
réponse ou au moins les pistes suffisantes...
Merci donc de nous dire où vous en êtes par rapport aux réponses apportées
dans le fil original.

Exemple vite fait d'une fonction a appeler avec le nom de la station en
paramètre et qui retournera la chaine OU complète:
Moveto = NewOu("wks201-XP***")
retournera la chaine:
OU=WKS,OU=computers,OU 1-Rennes,DC=MYDOM,DC=COM

Function NewOu(strComputerName)
NewOu = Null
If Len(strComputerName) < 6 Then
WScript.Echo "Error - The name of the computer " & strComputerName & " is
way too short for me!"
Exit Function
End If
Dim strTemp, strLeftOU, strMiddleOU, strRightOU, strEndDC
strEndDC = ",DC=MYDOM,DC=COM"
strMiddleOU = ",OU=computers,OU="
strLeftOU = "OU=" & Left(UCase(strComputerName), 3)
strTemp = UCase(Mid(strComputerName, 4, 3))
Select Case strTemp
Case "201"
strRightOU = "-Rennes"
Case "305"
strRightOU = "-Brest"
Case Else
WScript.Echo "Error - The computer name " & strComputerName & " has a
city code of '" & strTemp & "' that i didn't recognize yet!"
Exit Function
End Select
strRightOU = strTemp & strRightOU
strTemp = strLeftOU & strMiddleOU & strRightOU & strEndDC
WScript.Echo "Info - The computer " & strComputerName & " will be moved to
" & strTemp
NewOu = strTemp
End Function

Dim strMoveTo
strMoveTo = NewOu("nbk305-2K***")
If IsNull(strMoveTo) Then strMoveTo = "Null"
WScript.Echo "The NewOu function return " & strMoveTo




Avatar
jbongran
"Lyes" a écrit dans le message de
news:
Bonjour,

Je vous prie de m'excuser car j'avais republier mon post avec un
titre différent afin de mieux préciser ma demande et j'avais totalement
oublié mon précédent post que je ne surveillais plus depuis.

Je vous remercie bcp de votre réponse je vous ferai part du resultat
rapidement néanmoins ne disposant pas d'environnement de test et étant
soumis à une gpo de restriction logiciel portant entre autre sur les
outils de virtualisation , je vais faire une demande pour obtenir
l'autorisation de créer des OU de test avec des computeraccounts bidon .
Oui je ne fais pas ce que je veux (je suis stagiaire).

Merci beaucoup pour vos nombreuses réponses

Lyes

"jbongran" wrote:

"Lyes" a écrit dans le message de
news:
> Bonjour
>
> Je dois déplacer 2000 comptes ordinateurs d'une Unité d'organistation
> active
> directory vers 600 Unités d'organisations différentes en fonction du
> nom
> des
> comptes d'ordinateurs.
>
> voici un exemple :
>
> le cpt wks201-XP*** devra aller dans la sous OU
> OU=WKS,OU=computers,OU 1-Rennes,DC=MYDOM,DC=COM
> le cpt nbk201-XP*** devra aller dans la sous OU
> OU=NBK,OU=computers,OU 1-Rennes,DC=MYDOM,DC=COM
> le cpt wks305-2K*** devra aller dans la sous OU
> OU=WKS,OU=computers,OU05-Brest,DC=MYDOM,DC=COM
> le cpt nbk305-2K*** devra aller dans la sous OU
> OU=nbk,OU=computers,OU05-Brest,DC=MYDOM,DC=COM
>
> Où wks workstation les 3 chiffres qui suivent sont un code ville 2K/XP
> je
> pense que vous avez compris...
>
> J'ai trouvé sur google le script ci dessous mais j'ignore comment le
> personnaliser pour éviter de me coller les 2000 comptes ordinateurs à
> la
> main.
>
> For /F "delims=" %i in ('dsquery * -filter
> "(&(objectcategory=person)(objectclass=user)(memberof=CN=test,OU¬counts,DC=CSSTEST,DC=local))"')
> do dsmove -newparent "OU=Test,DC=CS STEST,DC=local" %i
>
> Quelqu'un sait-il comment je dois faire?
> Si vous voyez une autre solution pour arriver au résultat je suis
> ouvert à
> toute les solutions.
>
> Merci beaucoup de votre aide
> Lyes


Gilles LAURENT et moi même avions répondu à cette question dans votre fil
intitulé "filtrer des ordinateurs par une partie de leur nom"
Sans retour de votre part, j'ai pour ma part consideré que vous aviez eu
la
réponse ou au moins les pistes suffisantes...
Merci donc de nous dire où vous en êtes par rapport aux réponses
apportées
dans le fil original.

Exemple vite fait d'une fonction a appeler avec le nom de la station en
paramètre et qui retournera la chaine OU complète:
Moveto = NewOu("wks201-XP***")
retournera la chaine:
OU=WKS,OU=computers,OU 1-Rennes,DC=MYDOM,DC=COM

Function NewOu(strComputerName)
NewOu = Null
If Len(strComputerName) < 6 Then
WScript.Echo "Error - The name of the computer " & strComputerName & "
is
way too short for me!"
Exit Function
End If
Dim strTemp, strLeftOU, strMiddleOU, strRightOU, strEndDC
strEndDC = ",DC=MYDOM,DC=COM"
strMiddleOU = ",OU=computers,OU="
strLeftOU = "OU=" & Left(UCase(strComputerName), 3)
strTemp = UCase(Mid(strComputerName, 4, 3))
Select Case strTemp
Case "201"
strRightOU = "-Rennes"
Case "305"
strRightOU = "-Brest"
Case Else
WScript.Echo "Error - The computer name " & strComputerName & " has a
city code of '" & strTemp & "' that i didn't recognize yet!"
Exit Function
End Select
strRightOU = strTemp & strRightOU
strTemp = strLeftOU & strMiddleOU & strRightOU & strEndDC
WScript.Echo "Info - The computer " & strComputerName & " will be moved
to
" & strTemp
NewOu = strTemp
End Function

Dim strMoveTo
strMoveTo = NewOu("nbk305-2K***")
If IsNull(strMoveTo) Then strMoveTo = "Null"
WScript.Echo "The NewOu function return " & strMoveTo








Le droit d'énumérer les OU est suffisant à ce stade, il suffit d'utiliser
wscript.echo en lieu et place d'effectuer le move, comme indiqué dans mes
deux posts.
Ca permet d'avancer en attendant d'avoir les droits, les OU de test crées,
etc.