Question
Distinguished Names [résolu]
- Laurent
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 12 ans 4 jours #17190
par Laurent
Distinguished Names [résolu] a été créé par Laurent
Bonjour à tous,
Je suis actuellement sur un server 2003, avec powershell v1.
Mon script importe une liste de nom d'un fichier et dois récupérer le distinguishedName de chaque membre depuis l'AD pour les placer dans les bons groupes.
Voici mon code...et mon soucis !
[code:1]Import-CSV \"listing.txt\" -Delimiter \";\" | % {
$groupe = $_.groupe
$nom = $_.nom
# Vérification de la liste
echo $nom
# Récupération Distinguished Names de l'utilisateur
$userAD = dsquery user -samid $nom
# On ajoute dans le groupe le user
dsmod group \"CN=grouptest,OU=Test,DC=dc1,DC=loc\" -addmbr $userAD
}[/code:1]
A force de test j'ai l'impression que la valeur de la variable $nom est \"oubliée\"
Dans une console powershell,
Je commence par vérifier où en est la variable :
echo $nom ... j'obtiens bien \"Laurent\"
Si je fais
dsquery user -samid $nom ... j'obtiens rien
Par contre si je redéfinis la variable
($nom = \"Laurent\") ... j'obtiens ce que je veux
Enfin, si je mets le nom \"en dur\" dans la commande :
dsquery user -samid \"Laurent\" ... j'ai mon résultat du type : \"CN=LAURENT,OU=Test,DC=dc1,DC=loc\".
Pour en revenir à mon script, jusqu'à la commande echo $nom ça marche, ensuite plus rien
Gros débutant en powershell, je pense passer à côté de quelque chose, mais quoi ?
Merci pour votre aide
Message édité par: Sasquash, à: 18/03/14 23:12
Message édité par: Sasquash, à: 18/03/14 23:24<br><br>Message édité par: Sasquash, à: 19/03/14 13:19
Je suis actuellement sur un server 2003, avec powershell v1.
Mon script importe une liste de nom d'un fichier et dois récupérer le distinguishedName de chaque membre depuis l'AD pour les placer dans les bons groupes.
Voici mon code...et mon soucis !
[code:1]Import-CSV \"listing.txt\" -Delimiter \";\" | % {
$groupe = $_.groupe
$nom = $_.nom
# Vérification de la liste
echo $nom
# Récupération Distinguished Names de l'utilisateur
$userAD = dsquery user -samid $nom
# On ajoute dans le groupe le user
dsmod group \"CN=grouptest,OU=Test,DC=dc1,DC=loc\" -addmbr $userAD
}[/code:1]
A force de test j'ai l'impression que la valeur de la variable $nom est \"oubliée\"
Dans une console powershell,
Je commence par vérifier où en est la variable :
echo $nom ... j'obtiens bien \"Laurent\"
Si je fais
dsquery user -samid $nom ... j'obtiens rien
Par contre si je redéfinis la variable
($nom = \"Laurent\") ... j'obtiens ce que je veux
Enfin, si je mets le nom \"en dur\" dans la commande :
dsquery user -samid \"Laurent\" ... j'ai mon résultat du type : \"CN=LAURENT,OU=Test,DC=dc1,DC=loc\".
Pour en revenir à mon script, jusqu'à la commande echo $nom ça marche, ensuite plus rien
Gros débutant en powershell, je pense passer à côté de quelque chose, mais quoi ?
Merci pour votre aide
Message édité par: Sasquash, à: 18/03/14 23:12
Message édité par: Sasquash, à: 18/03/14 23:24<br><br>Message édité par: Sasquash, à: 19/03/14 13:19
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 3 jours #17191
par Philippe
Réponse de Philippe sur le sujet Re:Distinguished Names
salut Sasquash
ton script est \"normal\" et fonctionne, si on enlève le fait que tu utilise quasiment que des instruction DOS.
regarde du côté du ficher listing.txt qui doit pas être correct :
- le délimiteur doit être coller directement au données (pas d'espace, tabulation ou autres caractères)
- vérifie l'encodage (par défaut il doit être ANSI) utilise notepad2 ou Notepad++ par exemple
ou réenregistre le fichier avec Notepad dans \"enregistrer sous...\" tu a \"encodage\" ANSI
ex:
[code:1]nom;prenom;groupe;password
Laurent;Dupont;groupe1;Password1
Pierre;Durand;groupe1;Password2[/code:1]
a par ça je vois rien
ton script est \"normal\" et fonctionne, si on enlève le fait que tu utilise quasiment que des instruction DOS.
regarde du côté du ficher listing.txt qui doit pas être correct :
- le délimiteur doit être coller directement au données (pas d'espace, tabulation ou autres caractères)
- vérifie l'encodage (par défaut il doit être ANSI) utilise notepad2 ou Notepad++ par exemple
ou réenregistre le fichier avec Notepad dans \"enregistrer sous...\" tu a \"encodage\" ANSI
ex:
[code:1]nom;prenom;groupe;password
Laurent;Dupont;groupe1;Password1
Pierre;Durand;groupe1;Password2[/code:1]
a par ça je vois rien
Connexion ou Créer un compte pour participer à la conversation.
- Laurent
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 12 ans 3 jours #17192
par Laurent
Pour commencer : merci !
J'ai été voir mon fichier et à première vue rien d'anormal.
En y regardant de plus prêt, j'ai systématiquement un espace après mes noms...
Donc ma variable $nom n'est pas peuplée de \"laurent\", mais de \"laurentespace\".
Je pense que c'est de là que viens mon problème car \"dsquery user -samid $nom\" me sort maintenant les données attendues.
Me reste plus qu'à trouver le moyen de supprimer les espaces en fin de chaques lignes dans mon fichier d'import (envrion 250 lignes
)
Message édité par: Sasquash, à: 19/03/14 11:57<br><br>Message édité par: Sasquash, à: 19/03/14 11:58
Réponse de Laurent sur le sujet Re:Distinguished Names
J'ai été voir mon fichier et à première vue rien d'anormal.
En y regardant de plus prêt, j'ai systématiquement un espace après mes noms...
Donc ma variable $nom n'est pas peuplée de \"laurent\", mais de \"laurentespace\".
Je pense que c'est de là que viens mon problème car \"dsquery user -samid $nom\" me sort maintenant les données attendues.
Me reste plus qu'à trouver le moyen de supprimer les espaces en fin de chaques lignes dans mon fichier d'import (envrion 250 lignes
Message édité par: Sasquash, à: 19/03/14 11:57<br><br>Message édité par: Sasquash, à: 19/03/14 11: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 3 jours #17193
par Philippe
Réponse de Philippe sur le sujet Re:Distinguished Names
tu peut rajouter TRIM a ta variable $nom ça devrait suffire :
[code:1]$userAD = dsquery user -samid ($nom.trim())[/code:1]
les () rajouter force powershell à effectuer le trim d'abord sinon tu aurais : dsquery user -samid Laurent.trim() à l'exécution
ou beaucoup mieux :
[code:1]$nom = $_.nom.trim()
[/code:1]
comme ça ta variable $nom sera prête pour tous le script
il existe aussi trimstart et trimend pour enlevé les espaces qu'au début ou à la fin du contenue de la variable<br><br>Message édité par: 6ratgus, à: 19/03/14 12:28
[code:1]$userAD = dsquery user -samid ($nom.trim())[/code:1]
les () rajouter force powershell à effectuer le trim d'abord sinon tu aurais : dsquery user -samid Laurent.trim() à l'exécution
ou beaucoup mieux :
[code:1]$nom = $_.nom.trim()
[/code:1]
comme ça ta variable $nom sera prête pour tous le script
il existe aussi trimstart et trimend pour enlevé les espaces qu'au début ou à la fin du contenue de la variable<br><br>Message édité par: 6ratgus, à: 19/03/14 12:28
Connexion ou Créer un compte pour participer à la conversation.
- Laurent
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 12 ans 3 jours #17194
par Laurent

Merci beaucoup pour ton aide.
La situation est maintenant débloquée<br><br>Message édité par: Sasquash, à: 19/03/14 13:21
Réponse de Laurent sur le sujet Re:Distinguished Names
Merci beaucoup pour ton aide.
La situation est maintenant débloquée<br><br>Message édité par: Sasquash, à: 19/03/14 13:21
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.065 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Distinguished Names [résolu]