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 :

déterminer le type d'une variable puis création de logs [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut déterminer le type d'une variable puis création de logs
    Bonjour,

    je suis encore sur mon script qui travaille sur un AD, mais je me restreins à une question précise. Ce script crée une variable $data et pour l'analyser, je voudrais déjà connaître son type. Dans ce livre, il est dit page 110 que pour déterminer le type, on fait $data.GetType(). Or, si je le fais, j'obtiens
    CN=sesa449786,OU=Users,OU=Grenoble-38I,OU=Sites,OU=FR,OU=Countries,DC=eur,DC=gad,DC=schneider-electric,DC=com.GetType()
    Ca a donc l'air invalide. Que faut-il faire ?

  2. #2
    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
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par laurentSc Voir le message
    je suis encore sur mon script qui travaille sur un AD

    Ton code semble être appelé dans un chaine de caractères :
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $data='ContenuDeVariable'
    "$data.Gettype()"
    #ContenuDeVariable.Gettype()
    Dans ce cas le parseur de Powershell considère que tu souhaite afficher le contenu de la variable $Data et ne tient pas compte de la suite d'instructions.
    Pour ce faire, il faut utiliser la construction de groupe $() comme ceci :
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    "$($data.Gettype())"
    #string
    Ainsi il tient compte du groupe d'instructions et affiche le type de la variable en tant que chaine de caractères.
    Si tu utilises directement le code dans la console :
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $data.Gettype()
    Il renvoi un objet type :
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    IsPublic IsSerial Name                                     BaseType
    -------- -------- ----                                     --------
    True     True     String                                   System.Object

  3. #3
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    nickel, avec ce que tu m'as indiqué, il retourne System.Object[]. C'est donc un objet. Mais comment avoir la liste des propriétés et leur valeur ?

  4. #4
    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
    Billets dans le blog
    1
    Par défaut
    C'est un tableau d'objet, regarde le nombre d'objet qu'il contient
    Ensuite le type de chaque objet :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    $Data|Get-Member
    Si ton tableau contient un seul et même type d'objet tu auras une seule ligne de détail :

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #tableau d'objet de même type
     $data=1..3
     $data|get-member
     
     
       TypeName: System.Int32
     
    Name        MemberType   Definition
    ----        ----------   ----------
    CompareTo   Method       int CompareTo...
    Si ton tableau d'objet contient des types différents tu auras plusieurs lignes de détail :
    Code powershell : 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
    17
    18
     
    $data +='String'
    $data|get-member
     
     
       TypeName: System.Int32
     
    Name        MemberType   Definition
    ----        ----------   ----------
    CompareTo   Method       int CompareTo...
     
     
     
       TypeName: System.String
     
    Name             MemberType
    ----             ----------
    Clone            Method ...

  5. #5
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Le comptage semble poser problème ! $data.Count donne
    CN=sesa449786,OU=Users,OU=Grenoble-38I,OU=Sites,OU=FR,OU=Countries,DC=eur,DC=gad,DC=schneider-electric,DC=com.Count
    Par contre, il n'y a qu'un seul type d'objet : $data|get-member donne
    TypeName: Microsoft.ActiveDirectory.Management.ADUser

    Name MemberType Definition
    ---- ---------- ----------
    Contains Method bool Contains(string propertyName)
    Equals Method bool Equals(System.Object obj)
    GetEnumerator Method System.Collections.IDictionaryEnumerator GetEnumerator()
    GetHashCode Method int GetHashCode()
    ...
    SamAccountName Property System.String SamAccountName {get;set;}
    comment afficher la valeur de la propriété SamAccountName ?

    EDIT : la méthode Contains semble adaptée mais je n'arrive pas à l'utiliser !

  6. #6
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Le comptage semble poser problème !
    Je vois ça :-).
    Citation Envoyé par laurentSc Voir le message
    comment afficher la valeur de la propriété SamAccountName ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Foreach ($User in $Data) {
     $user.SamAccountName
    }
    Citation Envoyé par laurentSc Voir le message
    la méthode Contains semble adaptée mais je n'arrive pas à l'utiliser !
    Il me semble que tu as déjà posté sur le sujet...

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

Discussions similaires

  1. determiner le type d'une variable
    Par Mokhtar BEN MESSAOUD dans le forum Langage
    Réponses: 1
    Dernier message: 14/03/2006, 17h11
  2. [VBA-E]Renvoyer le type d'une variable
    Par alexxx69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/02/2006, 18h07
  3. Connaitre le type d'une variable
    Par mic79 dans le forum Langage
    Réponses: 2
    Dernier message: 04/01/2006, 15h42
  4. Changer el type d'une variable sql sous postgre8/admin
    Par smag dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 24/08/2005, 12h31
  5. Déterminer le type d'une class dérivée
    Par LDDL dans le forum MFC
    Réponses: 3
    Dernier message: 10/12/2004, 17h36

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