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

Le
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 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 à
toutes les solutions.

Merci beaucoup de votre aide
Lyes
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Cédric GEORGEOT - Blog e-Novatic
Le #18692681
Hello,

Tout bêtement, is tu as W2K3, classe les ordinateurs puis fais un drag and
drop vers l'UO désirée.

Sinon, la commande NETDOM MOVE t'aidera sûrement !

Encore un lien =>
http://www.microsoft.com/technet/scriptcenter/csc/scripts/ad/computers/cscad007.mspx

--
Cédric GEORGEOT
Blog e-Novatic
http://blog.e-novatic.fr

"Lyes" 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 à
toutes les solutions.

Merci beaucoup de votre aide
Lyes


Lyes
Le #18692941
Bonjour Cédric,

Merci pour ta réponse.
Cepandant comme je l'ai précisé il y a 600 OU ce qui fait au moins 600 drag
and drop et par voie de conséquence 600 possibilités d'erreur.
Si j'en avais 50 je l'aurai fait à la main.

Cordialement



"Cédric GEORGEOT - Blog e-Novatic" wrote:

Hello,

Tout bêtement, is tu as W2K3, classe les ordinateurs puis fais un drag and
drop vers l'UO désirée.

Sinon, la commande NETDOM MOVE t'aidera sûrement !

Encore un lien =>
http://www.microsoft.com/technet/scriptcenter/csc/scripts/ad/computers/cscad007.mspx

--
Cédric GEORGEOT
Blog e-Novatic
http://blog.e-novatic.fr

"Lyes" 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 à
> toutes les solutions.
>
> Merci beaucoup de votre aide
> Lyes



Cédric GEORGEOT - Blog e-Novatic
Le #18698751
Effectivement, cela peut représenter un travail conséquent !
Sinon, as-tu regardé la commande ?

--
Cédric GEORGEOT
Blog e-Novatic
http://blog.e-novatic.fr

"Lyes" news:
Bonjour Cédric,

Merci pour ta réponse.
Cepandant comme je l'ai précisé il y a 600 OU ce qui fait au moins 600
drag
and drop et par voie de conséquence 600 possibilités d'erreur.
Si j'en avais 50 je l'aurai fait à la main.

Cordialement



"Cédric GEORGEOT - Blog e-Novatic" wrote:

Hello,

Tout bêtement, is tu as W2K3, classe les ordinateurs puis fais un drag
and
drop vers l'UO désirée.

Sinon, la commande NETDOM MOVE t'aidera sûrement !

Encore un lien =>
http://www.microsoft.com/technet/scriptcenter/csc/scripts/ad/computers/cscad007.mspx

--
Cédric GEORGEOT
Blog e-Novatic
http://blog.e-novatic.fr

"Lyes" 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 à
> toutes les solutions.
>
> Merci beaucoup de votre aide
> Lyes





Jonathan BISMUTH
Le #18700221
Bonjour Lyes,

si tu dispose ou peut disposer d'un fichier csv ressemblant à ça :
## debut fichier
WKS201-XP;OU=WKS,OU=computers,OU 1-Rennes,DC=MYDOM,DC=COM
WKS305-2K;OU=WKS,OU=computers,OU05-Brest,DC=MYDOM,DC=COM
## fin fichier

ce petit vbs pourrait peut être t'aider :

'## debut script###
Const ForReading = 1, ForWriting = 2, ForAppending = 8
dim fso, df1
CSVFile = "cmp.csv"

Set fso = CreateObject("Scripting.FileSystemObject")
Set df1 = fso.OpenTextFile(CSVFile,ForReading,True)
Const ADS_SCOPE_SUBTREE = 2

Do while Not df1.AtEndOfStream
varLigne = df1.readline()

Cmp = split(varLigne,";")(0)
DestOU = split(varLigne,";")(1)

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

objCommand.CommandText = "SELECT distinguishedName FROM
'LDAP://dc=MYDOM,dc=COM' WHERE objectCategory='computer' AND CN='" & Cmp &
"'"

Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst
Do Until objRecordSet.EOF
strDN = objRecordSet.Fields("distinguishedName").Value
objRecordSet.MoveNext
Loop

Set objCmp = GetObject("LDAP://" & strDN)
Set objNewOU = GetObject("LDAP://" & DestOU)

objNewOU.MoveHere objCmp.AdsPath, vbNullString
objCmp.SetInfo
loop

'## fin script###

Cordialement,
--
Jonathan BISMUTH
MVP Windows Server - Directory Services
MCSE 2000, Transcript (ID: 691839, code: MCSE2000)
http://blog.portail-mcse.net

"Lyes"
Bonjour Cédric,

Merci pour ta réponse.
Cepandant comme je l'ai précisé il y a 600 OU ce qui fait au moins 600
drag
and drop et par voie de conséquence 600 possibilités d'erreur.
Si j'en avais 50 je l'aurai fait à la main.

Cordialement



"Cédric GEORGEOT - Blog e-Novatic" wrote:

Hello,

Tout bêtement, is tu as W2K3, classe les ordinateurs puis fais un drag
and
drop vers l'UO désirée.

Sinon, la commande NETDOM MOVE t'aidera sûrement !

Encore un lien =>
http://www.microsoft.com/technet/scriptcenter/csc/scripts/ad/computers/cscad007.mspx

--
Cédric GEORGEOT
Blog e-Novatic
http://blog.e-novatic.fr

"Lyes" 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 à
> toutes les solutions.
>
> Merci beaucoup de votre aide
> Lyes





Lyes
Le #18702171
Bonjour Cédric

Oui j'ai bien regardé la commande NETDOM MOVE , je ne la connaissais pas
mais elle me servira certainement d'ici qqe jrs, cepandant elle ne change
rien à mon problème en comparaison à dsquery + dsmove.

il faudrait que je puisse boucler sur chaque nom d'ordi en faisant une
première passe de recherche de l'OU correspondante au code ville puis une
seconde sur la sous OU corespondant au type d'ordi (wks ou lp) suivi du
dsmove newparent ...

Malheureusement je sais l'exprimer mais pas le faire...

Merci encore pour ta réponse.

Cordialement

Lyes

"Cédric GEORGEOT - Blog e-Novatic" a écrit :

Effectivement, cela peut représenter un travail conséquent !
Sinon, as-tu regardé la commande ?

--
Cédric GEORGEOT
Blog e-Novatic
http://blog.e-novatic.fr

"Lyes" news:
> Bonjour Cédric,
>
> Merci pour ta réponse.
> Cepandant comme je l'ai précisé il y a 600 OU ce qui fait au moins 600
> drag
> and drop et par voie de conséquence 600 possibilités d'erreur.
> Si j'en avais 50 je l'aurai fait à la main.
>
> Cordialement
>
>
>
> "Cédric GEORGEOT - Blog e-Novatic" wrote:
>
>> Hello,
>>
>> Tout bêtement, is tu as W2K3, classe les ordinateurs puis fais un drag
>> and
>> drop vers l'UO désirée.
>>
>> Sinon, la commande NETDOM MOVE t'aidera sûrement !
>>
>> Encore un lien =>
>> http://www.microsoft.com/technet/scriptcenter/csc/scripts/ad/computers/cscad007.mspx
>>
>> --
>> Cédric GEORGEOT
>> Blog e-Novatic
>> http://blog.e-novatic.fr
>>
>> "Lyes" >> 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 à
>> > toutes les solutions.
>> >
>> > Merci beaucoup de votre aide
>> > Lyes
>>



Lyes
Le #18702381
Bonjour Jonathan,

Hélas non je ne dispose pas d'un tel fichier et je ne sais pas comment
l'établir.
Je peux juste avoir à l'aide de csvde un listing des DN des ordinateurs avec
leurs emplacements actuels.

Sinon je tiens à te remercier pour votre script, car il me fournit déjà 50%
de la solution.
Grâce à toi j'ai bien avancé et je citerai ton nom dans mon rapport de stage
ainsi qu'en commentaire dans le script que je laisserai à mon maitre de stage.

Merci beaucoup

Lyes



"Jonathan BISMUTH" a écrit :

Bonjour Lyes,

si tu dispose ou peut disposer d'un fichier csv ressemblant à ça :
## debut fichier
WKS201-XP;OU=WKS,OU=computers,OU 1-Rennes,DC=MYDOM,DC=COM
WKS305-2K;OU=WKS,OU=computers,OU05-Brest,DC=MYDOM,DC=COM
## fin fichier

ce petit vbs pourrait peut être t'aider :

'## debut script###
Const ForReading = 1, ForWriting = 2, ForAppending = 8
dim fso, df1
CSVFile = "cmp.csv"

Set fso = CreateObject("Scripting.FileSystemObject")
Set df1 = fso.OpenTextFile(CSVFile,ForReading,True)
Const ADS_SCOPE_SUBTREE = 2

Do while Not df1.AtEndOfStream
varLigne = df1.readline()

Cmp = split(varLigne,";")(0)
DestOU = split(varLigne,";")(1)

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

objCommand.CommandText = "SELECT distinguishedName FROM
'LDAP://dc=MYDOM,dc=COM' WHERE objectCategory='computer' AND CN='" & Cmp &
"'"

Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst
Do Until objRecordSet.EOF
strDN = objRecordSet.Fields("distinguishedName").Value
objRecordSet.MoveNext
Loop

Set objCmp = GetObject("LDAP://" & strDN)
Set objNewOU = GetObject("LDAP://" & DestOU)

objNewOU.MoveHere objCmp.AdsPath, vbNullString
objCmp.SetInfo
loop

'## fin script###

Cordialement,
--
Jonathan BISMUTH
MVP Windows Server - Directory Services
MCSE 2000, Transcript (ID: 691839, code: MCSE2000)
http://blog.portail-mcse.net

"Lyes"
> Bonjour Cédric,
>
> Merci pour ta réponse.
> Cepandant comme je l'ai précisé il y a 600 OU ce qui fait au moins 600
> drag
> and drop et par voie de conséquence 600 possibilités d'erreur.
> Si j'en avais 50 je l'aurai fait à la main.
>
> Cordialement
>
>
>
> "Cédric GEORGEOT - Blog e-Novatic" wrote:
>
>> Hello,
>>
>> Tout bêtement, is tu as W2K3, classe les ordinateurs puis fais un drag
>> and
>> drop vers l'UO désirée.
>>
>> Sinon, la commande NETDOM MOVE t'aidera sûrement !
>>
>> Encore un lien =>
>> http://www.microsoft.com/technet/scriptcenter/csc/scripts/ad/computers/cscad007.mspx
>>
>> --
>> Cédric GEORGEOT
>> Blog e-Novatic
>> http://blog.e-novatic.fr
>>
>> "Lyes" >> 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 à
>> > toutes les solutions.
>> >
>> > Merci beaucoup de votre aide
>> > Lyes
>>





Jonathan BISMUTH
Le #18702611
c'est un plaisir, même si ça fait beaucoup de citations pour quelques lignes
de vbs :)

tu devrais tout de même pouvoir t'en sortir si tu arrive à faire un petit
bout de script qui permet de déduire la destination depuis le CN de chaque
poste... le plus dur sera peut être de prévoir les 600 case pour les 600
OU?... à moins d'arriver à déterminer les OU en analysant exactement les
parties alphanumeriques et numeriques des machines.... à voir.

Note : Petit conseil, personnellement j'aime beaucoup AutoIT pour les
manipulations de chaines de caractère et de fichiers, je le trouve bien plus
digeste que tous les vbs de la terre... tu devrais vraiment arriver en
quelques lignes à générer un fichier source correcte avec ce language.

@+
--
Jonathan BISMUTH
MVP Windows Server - Directory Services
MCSE 2000, Transcript (ID: 691839, code: MCSE2000)
http://blog.portail-mcse.net

"Lyes"
Bonjour Jonathan,

Hélas non je ne dispose pas d'un tel fichier et je ne sais pas comment
l'établir.
Je peux juste avoir à l'aide de csvde un listing des DN des ordinateurs
avec
leurs emplacements actuels.

Sinon je tiens à te remercier pour votre script, car il me fournit déjà
50%
de la solution.
Grâce à toi j'ai bien avancé et je citerai ton nom dans mon rapport de
stage
ainsi qu'en commentaire dans le script que je laisserai à mon maitre de
stage.

Merci beaucoup

Lyes



"Jonathan BISMUTH" a écrit :

Bonjour Lyes,

si tu dispose ou peut disposer d'un fichier csv ressemblant à ça :
## debut fichier
WKS201-XP;OU=WKS,OU=computers,OU 1-Rennes,DC=MYDOM,DC=COM
WKS305-2K;OU=WKS,OU=computers,OU05-Brest,DC=MYDOM,DC=COM
## fin fichier

ce petit vbs pourrait peut être t'aider :

'## debut script###
Const ForReading = 1, ForWriting = 2, ForAppending = 8
dim fso, df1
CSVFile = "cmp.csv"

Set fso = CreateObject("Scripting.FileSystemObject")
Set df1 = fso.OpenTextFile(CSVFile,ForReading,True)
Const ADS_SCOPE_SUBTREE = 2

Do while Not df1.AtEndOfStream
varLigne = df1.readline()

Cmp = split(varLigne,";")(0)
DestOU = split(varLigne,";")(1)

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

objCommand.CommandText = "SELECT distinguishedName FROM
'LDAP://dc=MYDOM,dc=COM' WHERE objectCategory='computer' AND CN='" & Cmp
&
"'"

Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst
Do Until objRecordSet.EOF
strDN = objRecordSet.Fields("distinguishedName").Value
objRecordSet.MoveNext
Loop

Set objCmp = GetObject("LDAP://" & strDN)
Set objNewOU = GetObject("LDAP://" & DestOU)

objNewOU.MoveHere objCmp.AdsPath, vbNullString
objCmp.SetInfo
loop

'## fin script###

Cordialement,
--
Jonathan BISMUTH
MVP Windows Server - Directory Services
MCSE 2000, Transcript (ID: 691839, code: MCSE2000)
http://blog.portail-mcse.net

"Lyes"
> Bonjour Cédric,
>
> Merci pour ta réponse.
> Cepandant comme je l'ai précisé il y a 600 OU ce qui fait au moins 600
> drag
> and drop et par voie de conséquence 600 possibilités d'erreur.
> Si j'en avais 50 je l'aurai fait à la main.
>
> Cordialement
>
>
>
> "Cédric GEORGEOT - Blog e-Novatic" wrote:
>
>> Hello,
>>
>> Tout bêtement, is tu as W2K3, classe les ordinateurs puis fais un drag
>> and
>> drop vers l'UO désirée.
>>
>> Sinon, la commande NETDOM MOVE t'aidera sûrement !
>>
>> Encore un lien =>
>> http://www.microsoft.com/technet/scriptcenter/csc/scripts/ad/computers/cscad007.mspx
>>
>> --
>> Cédric GEORGEOT
>> Blog e-Novatic
>> http://blog.e-novatic.fr
>>
>> "Lyes" >> 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 à
>> > toutes les solutions.
>> >
>> > Merci beaucoup de votre aide
>> > Lyes
>>







Publicité
Poster une réponse
Anonyme