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 :

Comment convertir une chaîne en un entier ? [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Points : 55
    Points
    55
    Par défaut Comment convertir une chaîne en un entier ?
    Bonjour,

    je suis en train de créer un script Powershell qui permet de créer des utilisateurs dans l'AD 2008.
    Afin de faciliter la création et la gestion, mon script est censé remplir pas mal de propriétés de l'utilisateur.
    Notamment l'UID, qui doit être incrémenté par rapport à l'UID le plus haut de l'AD.

    J'ai donc fait une boucle qui fouille tout l'AD, ressort l'UID pour chaque utilisateur, et si jamais l'UID est plus haut que ma variable, l'UID remplace ma variable.

    A la sortie, j'ai donc une variable égal à l'UID le plus haut de l'AD, il ne me reste qu'à l'incrémenter.

    C'est la que se pose le problème, la variable que j'ai est considéré par PowerShell comme une "chaine", et ne peut donc être incrémenté.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    # Create a selector and start searching from the Root of AD
    $selector = New-Object DirectoryServices.DirectorySearcher
    $selector.SearchRoot = $root
     
    #Boucle qui check l'UID dispo
    $adobj2= $selector.findall() `
    | where {$_.properties.objectcategory -like "CN=*"}
    ForEach ($person2 in $adobj2)
    {
    $prop2=$person2.properties.uidnumber
     
    if (($prop2 -gt "$uid") -and ($prop2 -le 10800)){
    $uid=$prop2
    write-host $uid
    }}
    Quelqu'un aurait t-il une idée pour que je récupère cette variable en tant que chiffre et non chaine, ou que je puisse l'incrémenter d'une manière ou d'une autre?

    Une fois fini, je partagerais avec plaisir ce script pour ceux qu'il peut aider.

    Merci d'avance à ceux qui répondront.

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 75
    Points : 55
    Points
    55
    Par défaut
    j'ai trouvé ma réponse tout seul.
    Ça prenait deux lignes dans mon bouquin en fait ^^.

    en fait, voila ce qu'il fallait faire (ou cas ou quelqu'un tombe sur le post, c'est énervant si la réponse n'y est pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    # Create a selector and start searching from the Root of AD
    $selector = New-Object DirectoryServices.DirectorySearcher
    $selector.SearchRoot = $root
    
    #Boucle qui check l'UID dispo
    $adobj2= $selector.findall() `
    | where {$_.properties.objectcategory -like "CN=*"}
    ForEach ($person2 in $adobj2)
    {
    [int]$prop2=$($person2.properties.uidnumber)
    
    if (($prop2 -gt "$uid") -and ($prop2 -le 10800)){
    $uid=$prop2
    write-host $uid
    }}

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    j'en profite pour ajouter un autre code, si la chaîne contient un chiffre hexa cette approche ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    [int]$prop2="35C"
    $prop2=[int]::Parse("35C",[System.Globalization.NumberStyles]::HexNumber)
    Pour un code plus sûr on peut aussi utiliser TryParse, car à son tour la chaîne peut ne pas être un chiffre hexa...

    Sinon pense au résolu la prochaine fois

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

Discussions similaires

  1. Comment convertir une chaîne en un appel de fonction
    Par hotline dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/10/2010, 12h50
  2. [MySQL] comment convertir une variable php en entier
    Par bourbita.thameur dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 11/03/2009, 10h30
  3. Réponses: 4
    Dernier message: 22/12/2006, 15h10
  4. Réponses: 7
    Dernier message: 20/09/2006, 13h42
  5. Réponses: 3
    Dernier message: 28/09/2003, 10h46

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