Problème avec une variable powershell - Logiciels - Windows & Software
Marsh Posté le 24-10-2019 à 20:25:09
ReplyMarsh Posté le 24-10-2019 à 20:33:57
Je ne comprends pas le but du ToString() à la fin ? C'est déà une chaine que tu manipules...
Et aussi tu te compliques la tâche (je trouve) avec tes concaténations.
$ou_users = "OU=users,$ou_service" marchera aussi bien... (pareil ailleurs dans ton script d'ailleurs)
Si tu crains qu'il y ait des espaces dans les DN appelle le new-ADUser avec des double quotes autour des variables ça devrait suffire.
Marsh Posté le 24-10-2019 à 21:09:19
Ryo-Ohki a écrit : Je ne comprends pas le but du ToString() à la fin ? C'est déà une chaine que tu manipules... |
Je t'avoue avoir un peu essayer toutes les façons de faire possible, au cas où un petit détail ferait que la variable ne marche pas...
Donc j'en suis arrivé au fur et à mesure de mes test à ça.
Au niveau des concaténations, j'applique ce qu'on m'a apprit! Mais merci pour l'info, j'y penserais
Mais du coup, tu n'as pas de solution pour le réel problème ?
Marsh Posté le 24-10-2019 à 21:17:26
Ben l'idée c'était déjà de voir si avec une syntaxe moins alambiquée ça marchait mieux...
Je suis pas convaincu par le fait de mettre tes double quotes entre simples quotes, la simple quote va faire que ton caractère sera transcrit tel quel donc le DN résultant avec une double quote au milieu ne va pas aimer du tout, du tout...
D'ailleurs en regardant mieux ton message d'erreur on voit aussi une double quote qui traine à la fin, juste après DC=net (alors qu'il n'y en a pas au début du message d'erreur), à vue de nez c'est donc celle qui figure dans ta ligne rouge juste après ta variable $ou_users... C'est super moche.
Si t'es pas à l'aise avec le débuggeur de l'ISE utilise la méthode "du pauvre" (mais efficace!) et colle un Write-Host $ou_users juste après ta ligne rouge pour voir ce qu'elle contient... Je parie que tu affiches les double quotes.
EDIT : tiens test en deux secondes. Sur que c'est ça.
Marsh Posté le 24-10-2019 à 22:02:54
Ryo-Ohki a écrit : Ben l'idée c'était déjà de voir si avec une syntaxe moins alambiquée ça marchait mieux... |
Ca fonctionne avec $ou_users = "OU=users,$ou_service" !!!
Merci beaucoup pour ton aide.
En fait les doubles quotes je faisais exprès de faire en sorte qu'elles apparaissent parce que en tapant à la main la ligne de commande new-aduser... -Path "DC..." ça ne marchait qu'avec les doubles quotes...
Je m'étais donc focalisé dessus.
Merci beaucoup pour ton aide ! Problème résolu
Marsh Posté le 25-10-2019 à 06:27:07
Oui c'est toute la subtilité des double quotes en Powershell. A moins qu'il soient forcés via ton ancienne méthode, ou échappés avec un backquote, ils ne servent qu'à définir le contenu d'une chaine de caractère et sont retirés à l'exécution par l'interpréteur.
Content que ça marche
Marsh Posté le 24-10-2019 à 18:38:51
Bonjour à tous,
J'ai un petit soucis avec powershell.
J'essaye d'importer un CSV dans mon serveur (c'est un labo) mais j'ai un soucis avec une variable.
Dans mon script j'aimerais pouvoir préciser dans quelle OU seront les utilisateurs, selon leur service.
J'ai donc créer la variable "$ou_users" que j'ai mis en rouge dans le code.
Mais j'ai un soucis. Lorsque je tente de lancer "new-aduser -name $fullname -Path $ou_users" ça ne passe pas. J'ai le message suivant :
new-aduser : La syntaxe du nom de l’objet est incorrecte
Au caractère Ligne:1 : 1
+ new-aduser -name $fullname -Path $ou_users
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (CN=Carter WARRE...C=vcorp,DC=net":String) [New-ADUser], ADException
+ FullyQualifiedErrorId : ActiveDirectoryServer:8335,Microsoft.ActiveDirectory.Management.Commands.NewADUser
Mais lorsque j’exécute tout seul la variable $ou_users ça me donne "OU=users,OU=administratifs,OU=vcorp,DC=vcorp,DC=net" avec la bonne syntaxe et le nom que je veux.
Afin d'en être sûr j'ai donc exécuté $ou_users, copié ce que ça m'a donné puis directement collé dans ma commande.
Ce qui donne --> new-aduser -name $fullname -Path "OU=users,OU=administratifs,OU=vcorp,DC=vcorp,DC=net"
De cette manière cela fonctionne. La commande passe et mon utilisateur est créé dans la bonne OU.
Pouvez-vous me dire d'où ça pourrait venir ? Je n'arrive pas à trouver une solution, ni même pas comprendre ce qu'il se passe...
En espérant avoir été clair,
Merci d'avance pour vos réponses.
Vincent
PS : Je vous met le script complet au cas où.
Message édité par vincentlez le 24-10-2019 à 18:47:15