Question Création d'OU..Problème

Plus d'informations
il y a 12 ans 7 mois #15580 par jean
Réponse de jean sur le sujet Re:Création d'OU..Problème
Ahh d'accord merci ! oui en plus je connaissais ce bout de code mais je pensais que ça allait faire trop charger..

En tout cas t'es très fort, t'as dû baigner dans le Powershell ^^

Et merci beaucoup, c'est vraiment agréable de voir des gens aider comme tu le fait ; )

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 7 mois #15582 par Philippe
Réponse de Philippe sur le sujet Re:Création d'OU..Problème
jean21 écrit:

En tout cas t'es très fort, t'as dû baigner dans le Powershell ^^

je prefererer baigner dans l'ocean mais bon !!!!! mais je reste debutant

pour ce bout de cote il marche mais si l'object AD existe depuis quelques secondes et il m'indique l'Ou n'existe pas quand je viens juste de la cree !!!!!! (lenteur dans la syncro entre mes serveurs AD ou cache sur mon poste ?)

bref je cherche une autre solution plus generaliste<br><br>Message édité par: 6ratgus, à: 12/08/13 16:58

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 7 mois #15583 par Philippe
Réponse de Philippe sur le sujet Re:Création d'OU..Problème
j'ai revu un peu ton code je te laisse le regarder le temps de taper quelque commentaire...

[code:1]
#Importation du fichier CSV et creation du lien LDAP
Import-CSV \&quot;C:\test1.csv\&quot; -Delimiter \&quot;;\&quot; | Foreach {

#On recupere le champ \&quot;ou\&quot; du fichier CSV
$ch = $_.ou
Write-Host \&quot;OU a créé .... \&quot;$ch
#On split le champ \&quot;ou\&quot; sous forme de tableau
$extract = $ch.Split(\&quot;\\&quot;«»)
#On recupere la taille du tableau
$taille = $extract.Length-2
# try
# {
#Creation des OU (1er niveau)
if (![ADSI]::exists(\&quot;LDAP://$(\&quot;OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1])\&quot;«»))
{
write-host \&quot;l OU \&quot;$(\&quot;OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1])\&quot; n'existe pas je la rajoute\&quot;
New-ADOrganizationalUnit -Name $extract[$taille-1] -Path $(\&quot;DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1]) -ProtectedFromAccidentalDeletion $false
}
else
{
write-host \&quot;l OU est deja presente \&quot;$(\&quot;OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1])
}
#Creation OU (2eme niveau)
if ($taille -ge 2)
{
if (![ADSI]::exists(\&quot;LDAP://$(\&quot;OU=\&quot;+($extract[$taille-2])+\&quot;,OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1])\&quot;«»))
{
write-host \&quot;l OU \&quot;$(\&quot;OU=\&quot;+($extract[$taille-2])+\&quot;,OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1])\&quot; n'existe pas je la rajoute\&quot;
New-ADOrganizationalUnit -Name $extract[$taille-2] -Path $(\&quot;OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1]) -ProtectedFromAccidentalDeletion $false
}
else
{
write-host \&quot;l OU est deja presente \&quot;$(\&quot;OU=\&quot;+($extract[$taille-2])+\&quot;,OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1])
}
}
#Creation OU (3eme niveau)
if($taille -ge 3)
{
if (![ADSI]::exists(\&quot;LDAP://$(\&quot;OU=\&quot;+($extract[$taille-3])+\&quot;,OU=\&quot;+($extract[$taille-2])+\&quot;,OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1])\&quot;«»))
{
write-host \&quot;l OU \&quot;$(\&quot;OU=\&quot;+($extract[$taille-3])+\&quot;,OU=\&quot;+($extract[$taille-2])+\&quot;,OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1])\&quot; n'existe pas je la rajoute\&quot;
New-ADOrganizationalUnit -Name $extract[$taille-3] -Path $(\&quot;OU=\&quot;+($extract[$taille-2])+\&quot;,OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1]) -ProtectedFromAccidentalDeletion $false
}
else
{
write-host \&quot;l OU est deja presente \&quot;$(\&quot;OU=\&quot;+($extract[$taille-3])+\&quot;,OU=\&quot;+($extract[$taille-2])+\&quot;,OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1])
}
}
#Creation OU (4eme niveau)
if($taille -ge 4)
{
if (![ADSI]::exists(\&quot;LDAP://$(\&quot;OU=\&quot;+($extract[$taille-4])+\&quot;,OU=\&quot;+($extract[$taille-3])+\&quot;,OU=\&quot;+($extract[$taille-2])+\&quot;,OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1])\&quot;«»))
{
write-host \&quot;l OU \&quot;$(\&quot;OU=\&quot;+($extract[$taille-4])+\&quot;,OU=\&quot;+($extract[$taille-3])+\&quot;,OU=\&quot;+($extract[$taille-2])+\&quot;,OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1])\&quot; n'existe pas je la rajoute\&quot;
New-ADOrganizationalUnit -Name $extract[$taille-4] -Path $(\&quot;OU=\&quot;+($extract[$taille-3])+\&quot;,OU=\&quot;+($extract[$taille-2])+\&quot;,OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1]) -ProtectedFromAccidentalDeletion $false
}
else
{
write-host \&quot;l OU est deja presente \&quot;$(\&quot;OU=\&quot;+($extract[$taille-4])+\&quot;,OU=\&quot;+($extract[$taille-3])+\&quot;,OU=\&quot;+($extract[$taille-2])+\&quot;,OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1])
}
}
if($taille -ge 5)
{
if (![ADSI]::exists(\&quot;LDAP://$(\&quot;OU=\&quot;+($extract[$taille-5])+\&quot;,OU=\&quot;+($extract[$taille-4])+\&quot;,OU=\&quot;+($extract[$taille-3])+\&quot;,OU=\&quot;+($extract[$taille-2])+\&quot;,OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1])\&quot;«»))
{
write-host \&quot;l OU \&quot;$(\&quot;OU=\&quot;+($extract[$taille-5])+\&quot;,OU=\&quot;+($extract[$taille-4])+\&quot;,OU=\&quot;+($extract[$taille-3])+\&quot;,OU=\&quot;+($extract[$taille-2])+\&quot;,OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1])\&quot; n'existe pas je la rajoute\&quot;
New-ADOrganizationalUnit -Name $extract[$taille-5] -Path $(\&quot;OU=\&quot;+($extract[$taille-4])+\&quot;,OU=\&quot;+($extract[$taille-3])+\&quot;,OU=\&quot;+($extract[$taille-2])+\&quot;,OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1]) -ProtectedFromAccidentalDeletion $false
}
{
write-host \&quot;l OU est deja presente \&quot;$(\&quot;OU=\&quot;+($extract[$taille-5])+\&quot;,OU=\&quot;+($extract[$taille-4])+\&quot;,OU=\&quot;+($extract[$taille-3])+\&quot;,OU=\&quot;+($extract[$taille-2])+\&quot;,OU=\&quot;+($extract[$taille-1])+\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1])
}
}
# }
# catch
# {
# Write-Host \&quot;erreur\&quot;
# }
}
[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 7 mois #15584 par Philippe
Réponse de Philippe sur le sujet Re:Création d'OU..Problème
j'essai de faire court :

j'ai rajouter le test deja vu avec un write de l'action pour savoir ce qu'il fait pour la periode des tests
tu pourra les enlever apres
depuis le teste de presence plus de message d'erreur !..\&quot;Une tentative d'ajout...\&quot;
mais peut tu faire le test pour faire suite au commentaire du post precedant stp.

j'ai changer le calcul et l'usage de l'index $taille

je part 0 et +1 pour le DC
et de -1 a -5 pour les different niveau

j'ai changer le if -gt en if -ge pour qu'il rajoute les niveaux en fonction de $taille

et je crois que c'est tout

j'ai mis le try-catch en commentaire pour pouvoir faire le debugage tu peut les remettre et faire un envoie de mail dedans pour etre informer d'une erreur dans l'execution du script (AD inaccesible, pas de droit en ecriture sur OU, etc...)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 7 mois #15585 par Philippe
Réponse de Philippe sur le sujet Re:Création d'OU..Problème
apres si tu veux, tu peut modifier ton code pour le rendre plus court en enlevent les if pour chaque niveau

un truc comme ca (a finaliser)

[code:1]$dc = 'dc=\&quot;,DC=\&quot;+($extract[$taille])+\&quot;,DC=\&quot;+$extract[$taille+1]'
$extract = $extract[0 à $taille-1]
$extract | foreach {
$ou += $_
New-ADOrganizationalUnit -name $ou -path $dc
}[/code:1]

a rajouter le test et la gestion d'erreur<br><br>Message édité par: 6ratgus, à: 12/08/13 17:34

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 12 ans 7 mois #15587 par Philippe
Réponse de Philippe sur le sujet Re:Création d'OU..Problème
salut jean21

je me suis dis que ca aller me servir du coup j'ai revu ton script
plus index avec $taille
et donc plus de gestion de niveau
une detection de l'existence d'une OU qui fonctionne
une gestion des erreurs par try-catch pre-coder

[code:1]#Importation du fichier CSV et creation du lien LDAP
Import-CSV \&quot;C:\test1.csv\&quot; -Delimiter \&quot;;\&quot; | Foreach {

#On recupere le champ \&quot;ou\&quot; du fichier CSV
$ch = $_.ou
Write-Host \&quot;OU a créé .... \&quot;$ch
#On split le champ \&quot;ou\&quot; sous forme de tableau
$extract = $ch.Split(\&quot;\\&quot;«»)
#On recupere la taille du tableau
$taille = $extract.Length-2

# extraction du DC
$dc = \&quot;DC=\&quot;+($extract[-2])+\&quot;,DC=\&quot;+$extract[-1]
$extract1 = @()
$ou = \&quot;\&quot;
# extraction des OU
$extract1 += for($i=1;$i -le $taille ;$i++) {$extract[$taille-$i]}
$extract1 | foreach {
$ou = \&quot;OU=\&quot;+$_
# test si l'OU existe
try {
$ok = get-ADOrganizationalUnit -Filter \&quot;Name -eq `\&quot;$_`\&quot;\&quot; | where {$_.DistinguishedName -eq \&quot;$($ou),$($dc)\&quot;}}
catch { write-host \&quot;erreur AD indisponible\&quot;; exit }
if ($ok)
{
write-host \&quot;l OU est deja presente $($ou),$($dc)\&quot;
}
else
{
# rajout de l'OU
write-host \&quot;l'OU $($ou),$($dc) n'existe pas, je la rajoute\&quot;
try {
New-ADOrganizationalUnit -Name $_ -Path $($dc) -ProtectedFromAccidentalDeletion $false
}
catch
{
Write-Host \&quot;erreur de creation de l'OU $($ou),$($dc)\&quot;
}
}
$dc = $ou + \&quot;,\&quot; + $dc
}
}

[/code:1]

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.054 secondes
Propulsé par Kunena