Question
Création d'OU..Problème
- jean
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 24
- Remerciements reçus 0
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 ; )
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.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
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:
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
je prefererer baigner dans l'ocean mais bon !!!!! mais je reste debutantEn tout cas t'es très fort, t'as dû baigner dans le Powershell ^^
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.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
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 \"C:\test1.csv\" -Delimiter \";\" | Foreach {
#On recupere le champ \"ou\" du fichier CSV
$ch = $_.ou
Write-Host \"OU a créé .... \"$ch
#On split le champ \"ou\" sous forme de tableau
$extract = $ch.Split(\"\\"«»)
#On recupere la taille du tableau
$taille = $extract.Length-2
# try
# {
#Creation des OU (1er niveau)
if (![ADSI]::exists(\"LDAP://$(\"OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\"«»))
{
write-host \"l OU \"$(\"OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\" n'existe pas je la rajoute\"
New-ADOrganizationalUnit -Name $extract[$taille-1] -Path $(\"DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1]) -ProtectedFromAccidentalDeletion $false
}
else
{
write-host \"l OU est deja presente \"$(\"OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])
}
#Creation OU (2eme niveau)
if ($taille -ge 2)
{
if (![ADSI]::exists(\"LDAP://$(\"OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\"«»))
{
write-host \"l OU \"$(\"OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\" n'existe pas je la rajoute\"
New-ADOrganizationalUnit -Name $extract[$taille-2] -Path $(\"OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1]) -ProtectedFromAccidentalDeletion $false
}
else
{
write-host \"l OU est deja presente \"$(\"OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])
}
}
#Creation OU (3eme niveau)
if($taille -ge 3)
{
if (![ADSI]::exists(\"LDAP://$(\"OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\"«»))
{
write-host \"l OU \"$(\"OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\" n'existe pas je la rajoute\"
New-ADOrganizationalUnit -Name $extract[$taille-3] -Path $(\"OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1]) -ProtectedFromAccidentalDeletion $false
}
else
{
write-host \"l OU est deja presente \"$(\"OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])
}
}
#Creation OU (4eme niveau)
if($taille -ge 4)
{
if (![ADSI]::exists(\"LDAP://$(\"OU=\"+($extract[$taille-4])+\",OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\"«»))
{
write-host \"l OU \"$(\"OU=\"+($extract[$taille-4])+\",OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\" n'existe pas je la rajoute\"
New-ADOrganizationalUnit -Name $extract[$taille-4] -Path $(\"OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1]) -ProtectedFromAccidentalDeletion $false
}
else
{
write-host \"l OU est deja presente \"$(\"OU=\"+($extract[$taille-4])+\",OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])
}
}
if($taille -ge 5)
{
if (![ADSI]::exists(\"LDAP://$(\"OU=\"+($extract[$taille-5])+\",OU=\"+($extract[$taille-4])+\",OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\"«»))
{
write-host \"l OU \"$(\"OU=\"+($extract[$taille-5])+\",OU=\"+($extract[$taille-4])+\",OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\" n'existe pas je la rajoute\"
New-ADOrganizationalUnit -Name $extract[$taille-5] -Path $(\"OU=\"+($extract[$taille-4])+\",OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1]) -ProtectedFromAccidentalDeletion $false
}
{
write-host \"l OU est deja presente \"$(\"OU=\"+($extract[$taille-5])+\",OU=\"+($extract[$taille-4])+\",OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])
}
}
# }
# catch
# {
# Write-Host \"erreur\"
# }
}
[/code:1]
[code:1]
#Importation du fichier CSV et creation du lien LDAP
Import-CSV \"C:\test1.csv\" -Delimiter \";\" | Foreach {
#On recupere le champ \"ou\" du fichier CSV
$ch = $_.ou
Write-Host \"OU a créé .... \"$ch
#On split le champ \"ou\" sous forme de tableau
$extract = $ch.Split(\"\\"«»)
#On recupere la taille du tableau
$taille = $extract.Length-2
# try
# {
#Creation des OU (1er niveau)
if (![ADSI]::exists(\"LDAP://$(\"OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\"«»))
{
write-host \"l OU \"$(\"OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\" n'existe pas je la rajoute\"
New-ADOrganizationalUnit -Name $extract[$taille-1] -Path $(\"DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1]) -ProtectedFromAccidentalDeletion $false
}
else
{
write-host \"l OU est deja presente \"$(\"OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])
}
#Creation OU (2eme niveau)
if ($taille -ge 2)
{
if (![ADSI]::exists(\"LDAP://$(\"OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\"«»))
{
write-host \"l OU \"$(\"OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\" n'existe pas je la rajoute\"
New-ADOrganizationalUnit -Name $extract[$taille-2] -Path $(\"OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1]) -ProtectedFromAccidentalDeletion $false
}
else
{
write-host \"l OU est deja presente \"$(\"OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])
}
}
#Creation OU (3eme niveau)
if($taille -ge 3)
{
if (![ADSI]::exists(\"LDAP://$(\"OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\"«»))
{
write-host \"l OU \"$(\"OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\" n'existe pas je la rajoute\"
New-ADOrganizationalUnit -Name $extract[$taille-3] -Path $(\"OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1]) -ProtectedFromAccidentalDeletion $false
}
else
{
write-host \"l OU est deja presente \"$(\"OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])
}
}
#Creation OU (4eme niveau)
if($taille -ge 4)
{
if (![ADSI]::exists(\"LDAP://$(\"OU=\"+($extract[$taille-4])+\",OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\"«»))
{
write-host \"l OU \"$(\"OU=\"+($extract[$taille-4])+\",OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\" n'existe pas je la rajoute\"
New-ADOrganizationalUnit -Name $extract[$taille-4] -Path $(\"OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1]) -ProtectedFromAccidentalDeletion $false
}
else
{
write-host \"l OU est deja presente \"$(\"OU=\"+($extract[$taille-4])+\",OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])
}
}
if($taille -ge 5)
{
if (![ADSI]::exists(\"LDAP://$(\"OU=\"+($extract[$taille-5])+\",OU=\"+($extract[$taille-4])+\",OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\"«»))
{
write-host \"l OU \"$(\"OU=\"+($extract[$taille-5])+\",OU=\"+($extract[$taille-4])+\",OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\" n'existe pas je la rajoute\"
New-ADOrganizationalUnit -Name $extract[$taille-5] -Path $(\"OU=\"+($extract[$taille-4])+\",OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1]) -ProtectedFromAccidentalDeletion $false
}
{
write-host \"l OU est deja presente \"$(\"OU=\"+($extract[$taille-5])+\",OU=\"+($extract[$taille-4])+\",OU=\"+($extract[$taille-3])+\",OU=\"+($extract[$taille-2])+\",OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])
}
}
# }
# catch
# {
# Write-Host \"erreur\"
# }
}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
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 !..\"Une tentative d'ajout...\"
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...)
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 !..\"Une tentative d'ajout...\"
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.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
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=\",DC=\"+($extract[$taille])+\",DC=\"+$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
un truc comme ca (a finaliser)
[code:1]$dc = 'dc=\",DC=\"+($extract[$taille])+\",DC=\"+$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.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
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 \"C:\test1.csv\" -Delimiter \";\" | Foreach {
#On recupere le champ \"ou\" du fichier CSV
$ch = $_.ou
Write-Host \"OU a créé .... \"$ch
#On split le champ \"ou\" sous forme de tableau
$extract = $ch.Split(\"\\"«»)
#On recupere la taille du tableau
$taille = $extract.Length-2
# extraction du DC
$dc = \"DC=\"+($extract[-2])+\",DC=\"+$extract[-1]
$extract1 = @()
$ou = \"\"
# extraction des OU
$extract1 += for($i=1;$i -le $taille ;$i++) {$extract[$taille-$i]}
$extract1 | foreach {
$ou = \"OU=\"+$_
# test si l'OU existe
try {
$ok = get-ADOrganizationalUnit -Filter \"Name -eq `\"$_`\"\" | where {$_.DistinguishedName -eq \"$($ou),$($dc)\"}}
catch { write-host \"erreur AD indisponible\"; exit }
if ($ok)
{
write-host \"l OU est deja presente $($ou),$($dc)\"
}
else
{
# rajout de l'OU
write-host \"l'OU $($ou),$($dc) n'existe pas, je la rajoute\"
try {
New-ADOrganizationalUnit -Name $_ -Path $($dc) -ProtectedFromAccidentalDeletion $false
}
catch
{
Write-Host \"erreur de creation de l'OU $($ou),$($dc)\"
}
}
$dc = $ou + \",\" + $dc
}
}
[/code:1]
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 \"C:\test1.csv\" -Delimiter \";\" | Foreach {
#On recupere le champ \"ou\" du fichier CSV
$ch = $_.ou
Write-Host \"OU a créé .... \"$ch
#On split le champ \"ou\" sous forme de tableau
$extract = $ch.Split(\"\\"«»)
#On recupere la taille du tableau
$taille = $extract.Length-2
# extraction du DC
$dc = \"DC=\"+($extract[-2])+\",DC=\"+$extract[-1]
$extract1 = @()
$ou = \"\"
# extraction des OU
$extract1 += for($i=1;$i -le $taille ;$i++) {$extract[$taille-$i]}
$extract1 | foreach {
$ou = \"OU=\"+$_
# test si l'OU existe
try {
$ok = get-ADOrganizationalUnit -Filter \"Name -eq `\"$_`\"\" | where {$_.DistinguishedName -eq \"$($ou),$($dc)\"}}
catch { write-host \"erreur AD indisponible\"; exit }
if ($ok)
{
write-host \"l OU est deja presente $($ou),$($dc)\"
}
else
{
# rajout de l'OU
write-host \"l'OU $($ou),$($dc) n'existe pas, je la rajoute\"
try {
New-ADOrganizationalUnit -Name $_ -Path $($dc) -ProtectedFromAccidentalDeletion $false
}
catch
{
Write-Host \"erreur de creation de l'OU $($ou),$($dc)\"
}
}
$dc = $ou + \",\" + $dc
}
}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.054 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Création d'OU..Problème