IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Paramètre booléen depuis variable [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2015
    Messages : 21
    Par défaut Paramètre booléen depuis variable
    Bonjour à tous,
    dans un script utilisant la commande New-ADUser, j'ai un souci avec les paramètres booléens, tels que CannotChangePassword, ChangePasswordAtLogon,Enable, PasswordNeverExpires.
    Si j'utilise une variable, cela provoque une erreur. J'ai essayé différents formats ($true, true, 0 ,1) sans succès.
    Lorsque je mets les valeurs en dur, ($true ou $false) je n'ai pas d'erreur.
    Est-ce dû au fait que ces paramètres n'acceptent pas d'entrée de pipeline? Question de format de chaîne?
    Existe-t-il une méthode permettant d'utiliser une variable? Je n'ai pas trouvé de réponse claire lors de mes recherches en ligne.


    Michel

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Il n'y a pas de raison cela devrait fonctionner.
    Il faudrait ton code d'exemple et l'erreur retournée.

    Par contre je n'ai pas d'AD sous la main

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2015
    Messages : 21
    Par défaut
    Bonjour Eric,
    voici les éléments:
    -la ligne de commande (dans une boucle ForEach):
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    New-ADUser -Name $Util.Name -ChangePasswordAtLogon $Util.ChangePasswordAtLogon `
            -City $util.City -Company $util.Company -Country $util.Country -Department $util.Department -Description $util.Description `
            -DisplayName $util.DisplayName -Division $util.Division -EmailAddress $util.EmailAddress -EmployeeID $util.EmployeeID `
            -EmployeeNumber $util.EmployeeNumber  -GivenName $util.GivenName -HomeDirectory $util.HomeDirectory -HomeDrive $util.HomeDrive `
            -MobilePhone $util.MobilePhone -Initials $util.Initials -Office $Util.Office -OfficePhone $Util.OfficePhone `
            -Organization $Util.Organization -PasswordNeverExpires $Util.PasswordNeverExpires `
            -ProfilePath $Util.ProfilePath -SamAccountName $Util.SamAccountName -ScriptPath $Util.ScriptPath -Surname $Util.Surname `
            -Title $Util.Title -Type $Util.Type -UserPrincipalName $util.UserPrincipalName `
            -Accountpassword (ConvertTo-SecureString $Util.AccountPassword -Asplaintext -Force) -Enabled $util.Enabled

    le message d'erreur est (j'ai un peu abrégé):
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    New-ADUser: impossible de convertir <<System.String>> en type <<System.Nullable 1 [System.Boolean]>> requis par le paramètre <<Enabled>>.
    + CategoryInfo: InvalidArgument: (;:) [New-ADUser], ParameterBindingException
    +FullyQualifiedErrorId : Cannotconvertargument, microsoft, activedirectory, management, commands, newaduser

    -un extrait de la boucle de création des champs (une 1ère liste au format DsAdd pour la convertir au format New-ADuser)
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        if ($util2.canchpwd -eq "no")
        { $TabValeurs.CannotChangePassword = "$true" }
        else { $TabValeurs.CannotChangePassword = "$false" }
        if ($util2.mustchpwd -eq "no")
        { $TabValeurs.ChangePasswordAtLogon = "$true" }
        else { $TabValeurs.ChangePasswordAtLogon = "$false" }
        if ($util2.disabled -eq "no")
        { $TabValeurs.Enabled = "$true" }
        else { $TabValeurs.Enabled = "$false" }

    Je travaille avec une machine virtuelle (Server 2012R2 sur VMware)

    Michel

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Essai avec $true ou $false et pas "$true"

  5. #5
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2015
    Messages : 21
    Par défaut
    J'ai déjà essayé, ainsi qu'avec 0 et 1, sans succès.
    De plus, je dois encadrer les valeurs $true et $false avec des guillemets sinon cela provoque une erreur dans une instruction d'insertion:
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    $NouvLigne[$i] = $Val + ";"   ($NouvLigne est un string[])
    (erreur: format de chaîne incorrect)
    J'ai résolu ce souci en encadrant la chaîne, elle est correctement insérée dans le fichier de sortie.
    Je pense qu'il faudrait forcer le type "Bool" mais comment et à quelle étape?

    Michel

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Oui tu peux caster avec [bool]

  7. #7
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    De plus, je dois encadrer les valeurs $true et $false avec des guillemets sinon cela provoque une erreur dans une instruction d'insertion:
    $NouvLigne[$i] = $Val + ";" ($NouvLigne est un string[])
    Ceci est un autre problème, tu doit utiliser $false et pas "$false"

    Voici le problème :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $false -eq "$false"
    False

  8. #8
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Donc déjà tu essaie en mettant un vrai booléen dans une variable et quand ça marche on s'occupe de l'autre problème.

  9. #9
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2015
    Messages : 21
    Par défaut
    [book]?
    Je suppose que tu voulais écrire: [bool] !
    Cela fonctionne, à condition d'utiliser cette syntaxe:
    ([bool].Variable) dans la commande New-Aduser.
    Il faut aussi que la chaîne soit vide pour être évaluée comme False, sinon elle est convertie en True.
    Cela n'est pas un gros souci technique mais moins pratique.

    Michel
    Edit: je n'avais pas vu tes précédents messages
    J'essaie de modifier la boucle de création mais cela s'avère plus compliqué.

  10. #10
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2015
    Messages : 21
    Par défaut
    Bonjour,
    au hasard de mes recherches, j'ai trouvé une autre solution :
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    New-ADUser ..... -Enabled ([system.convert]::ToBoolean($Util.Enabled))

    Cela permet d'utiliser $true ou $false (true ou false marchent aussi) dans le fichier csv; pour moi c'est plus parlant.
    Inconvénients: la chaîne ne peut être vide ni contenir une valeur quelconque (erreur: chaîne non reconnue comme booléen valide)

    Quant à l'autre souci, j'ai compris l'erreur:
    $true + ";" --> erreur
    "$true" + ";" --> true;
    --> on ne peut accoler un booléen avec une chaîne.
    J'ai modifié le script ainsi:
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If ("$Val" -ne "")
            { $NouvLigne[$i] = "$Val" + ";"  }
            else { $NouvLigne[$i] = ";" }

    Michel

  11. #11
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Donc tout va bien ... tu as compris.

  12. #12
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2015
    Messages : 21
    Par défaut
    je ne sais pas si j'ai tout compris mais j'ai pu trouver une solution.
    Merci,

    Michel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/08/2007, 22h05
  2. Lecture des paramètres d'une variable XML
    Par alband85 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 18/07/2007, 09h16
  3. [Upload] faire un lien depuis variable
    Par Doksuri dans le forum Langage
    Réponses: 2
    Dernier message: 06/02/2007, 16h27
  4. passage de paramètre en nombre variable
    Par fdujardi2 dans le forum C
    Réponses: 2
    Dernier message: 18/07/2006, 13h50
  5. Requète paramétrée avec résultat variable
    Par slackjayo dans le forum Access
    Réponses: 2
    Dernier message: 28/04/2006, 20h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo