Question
Création d'OU..Problème
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
jean21 écrit:
Une variable à tjr un contenu, $null est une valeur particulière mais reste une valeur.j'ai l'impression qu'il n'y a rien dans cette variable ($_)..
Utilise Write-Debug pour tenter de déterminer l'origine du problème :
[code:1]
Write-Debug \"Current OU= $_\"
Write-Debug \"Current is $null $($_ -eq $null)\"
Write-Debug \"Current is $null $($_.PSbase -eq $null)\"
[/code:1]
Pense à configurer cette variable :
[code:1]
$global:«»DebugPreference=\"Continue\" #debug ON
$global:«»DebugPreference=\"SilentlyContinue\" #debug OFF
[/code:1]
[edit]
Le test sur psbase répond au cas suivant :
[code:1]
$t=@()
$t
#aucun affichage
$t -eq $null
#aucun affichage
$t.psbase -eq $null
#false
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 14/08/13 13:13
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
et oui une variable n'est jamais vraiment vierge
Dans le for, mon extract est vide, c'est pas normal ?
je me demande si ton fichier a toujour le bon format
a savoir premiere, ligne le nom du/des champs separer par des point-virgule
ex: \"OU\";\"nom\";...
ligne suivante, les valeurs separer par des point-virgule
ex: \"Filiale\Entreprise\Manager\domaine\fr\";tyty
et les saut de ligne au standard windows (pour etre sur ouvre le fichier avec le bloc-note de windows mais pas le wordpad
si tu a tous sur la meme ligne, tu a un probleme a ce niveau
tu essayer ceci pour voir si tu n'a pas de probleme d'import :
[code:1]Import-CSV \"C:\test1.csv\" -Delimiter \";\" | Foreach {
$ch = $_.ou
$ch
}
[/code:1]
tu devrais voir s'afficher les lignes une par une comme ca :
[code:1]Filiale\Entreprise\Manager\domaine\fr
test\domaine\fr
test\testN1\domaine\fr
test\test\testN1\domaine\fr[/code:1]<br><br>Message édité par: 6ratgus, à: 14/08/13 14:26
Connexion ou Créer un compte pour participer à la conversation.
- jean
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 24
- Remerciements reçus 0
Salut,
jean21 écrit:Une variable à tjr un contenu, $null est une valeur particulière mais reste une valeur.j'ai l'impression qu'il n'y a rien dans cette variable ($_)..
Utilise Write-Debug pour tenter de déterminer l'origine du problème :
[code:1]
Write-Debug \"Current OU= $_\"
Write-Debug \"Current is $null $($_ -eq $null)\"
Write-Debug \"Current is $null $($_.PSbase -eq $null)\"
[/code:1]
Pense à configurer cette variable :
[code:1]
$global:«»DebugPreference=\"Continue\" #debug ON
$global:«»DebugPreference=\"SilentlyContinue\" #debug OFF
[/code:1]
[edit]
Le test sur psbase répond au cas suivant :
[code:1]
$t=@()
$t
#aucun affichage
$t -eq $null
#aucun affichage
$t.psbase -eq $null
#false
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 14/08/13 13:13
Oula désolé mais là c'est compliqué..
Donc les Write-Debug je les mets ou ?
De même pour la configuration des variables..Je les configure où ?
C'est quoi psbase ? Dsl je suis vraiment un débutant..
Connexion ou Créer un compte pour participer à la conversation.
- jean
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 24
- Remerciements reçus 0
merci laurent
et oui une variable n'est jamais vraiment vierge
Dans le for, mon extract est vide, c'est pas normal ?
je me demande si ton fichier a toujour le bon format
a savoir premiere, ligne le nom du/des champs separer par des point-virgule
ex: \"OU\";\"nom\";...
ligne suivante, les valeurs separer par des point-virgule
ex: \"Filiale\Entreprise\Manager\domaine\fr\";tyty
et les saut de ligne au standard windows (pour etre sur ouvre le fichier avec le bloc-note de windows mais pas le wordpad
si tu a tous sur la meme ligne, tu a un probleme a ce niveau
tu essayer ceci pour voir si tu n'a pas de probleme d'import :
[code:1]Import-CSV \"C:\test1.csv\" -Delimiter \";\" | Foreach {
$ch = $_.ou
$ch
}
[/code:1]
tu devrais voir s'afficher les lignes une par une comme ca :
[code:1]Filiale\Entreprise\Manager\domaine\fr
test\domaine\fr
test\testN1\domaine\fr
test\test\testN1\domaine\fr[/code:1]<br><br>Message édité par: 6ratgus, à: 14/08/13 14:26
Oui oui il a exactement le même format qu'au début..
Ça m'affiche juste la première ligne..Mais je pense que y'a un problème avec ton :
\"Name -eq '\"$_\"'\"
Mais c'est vrai que j'ai l'impression que mon code voit une valeur vide alors que nan..C'est très fréquent avec les fichiers csv comment remédier à ça ?<br><br>Message édité par: jean21, à: 16/08/13 10:03
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
essai avec ce code modifier et donne moi les resultats avant ce soir je pars encore en vacances !!
[code:1]
Set-StrictMode -version latest
Import-Module activedirectory
#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
if ($ch) {
Write-Host \"OU a créé .... \"$ch -foregroundcolor green
#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
if ([ADSI]::exists(\"LDAP://$($ou),$($dc)\"«»)) {
# if ($ok) {
write-host \"l OU est deja presente $($ou),$($dc)\" -foregroundcolor gray }
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)\" -foregroundcolor Red }
}
$dc = $ou + \",\" + $dc
}
}
}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- jean
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 24
- Remerciements reçus 0
bonjour jean21
essai avec ce code modifier et donne moi les resultats avant ce soir je pars encore en vacances !!
[code:1]
Set-StrictMode -version latest
Import-Module activedirectory
#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
if ($ch) {
Write-Host \"OU a créé .... \"$ch -foregroundcolor green
#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
if ([ADSI]::exists(\"LDAP://$($ou),$($dc)\"«»)) {
# if ($ok) {
write-host \"l OU est deja presente $($ou),$($dc)\" -foregroundcolor gray }
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)\" -foregroundcolor Red }
}
$dc = $ou + \",\" + $dc
}
}
}
[/code:1]
D'accord, je vais essayer de te répondre vite alors ^^
Pour le code j'ai un message d'erreur :
Execption lors de l'appel de \"Exists\" avec \"1\" argument : une référence a été renvoyé par le serveur.
Je ne vois pas du tout d'où ça peut venir :/
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Création d'OU..Problème