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 :

Valeurs dans des champs xml


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 26
    Points : 22
    Points
    22
    Par défaut Valeurs dans des champs xml
    Bonjour,

    Je tente de créer des utilisateurs et de leur ajouter des groupes via un script powershell depuis un fichier xml.

    Le fichier xml contient (entre autre) le samaccountname et le nom des groupes.

    Le New-ADUser ne me pose aucun problème, en voici un extrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    New-ADUser -samaccountname $user.samaccountname -Name $user.NOMPrenom -Path $OUUtilisateurs -givenName $user.prenom -userPrincipalName $user.mail -OtherAttributes $otherAttributes
    Je bloque sur l'affectation des groupes.

    Le fichier xml contient 2 lignes (puisque 2 groupes à affecter). Lorsque je parcoure les deux lignes avec le code ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        foreach($group in $user.groups)
        {
            Get-ADGroup -identity group.cn
        }
    j'obtiens
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Get-ADGroup : Impossible de convertir «System.Object[]» en type «Microsoft.ActiveDirectory.Management.ADGroup», requis par le 
    paramètre «Identity». La méthode spécifiée n'est pas prise en charge.
    Au caractère C:\bat\PS1\importv2.ps1:19 : 31
    +         Get-ADGroup -identity $group.cn
    +                               ~~~~~~~~~
        + CategoryInfo          : InvalidArgument : (:) [Get-ADGroup], ParameterBindingException
        + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.ActiveDirectory.Management.Commands.GetADGroup
    Par contre, si j'exécute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        foreach($group in $user.groups)
        {
            Get-ADGroup -identity "uf1010"
        }
    J'obtiens bien ce que je veux.

    Alors j'ai bien sur vérifier avec un echo la valeur $group.cn, il me retourne bien ma chaine de caractères.

    J'ai quand même tenté de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Get-ADGroup -identity [ADSi]$group.cn
    Mais pas de chance, cette fois il me retourne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Get-ADGroup : Impossible de trouver un objet avec l’identité «*[ADSi]System.Xml.XmlElement.cn*» sous*: «*DC=xxx,DC=yyy*».
    Au caractère C:\bat\PS1\importv2.ps1:19 : 9
    +         Get-ADGroup -identity [ADSi]$group.cn
    +         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: ([ADSi]System.Xml.XmlElement.cn:ADGroup) [Get-ADGroup], ADIdentityNotFoundException
        + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.Active 
       Directory.Management.Commands.GetADGroup
    Bref, je bloque sur cette conversion de type ou la récupération de la valeur au format chaine... j'avoue ne pas trop savoir quel chemin prendre pour résoudre le problème.

    Merci

  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
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    vérifie ce que tu manipules en utilisant Get-member sur ton objet.
    Pour la liaison de paramètre tu peux utiliser le cmdlet Trace-Commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    trace-command parameterbinding {ton code} -pshost

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 71
    Points : 84
    Points
    84
    Par défaut
    Bonjour,

    Merci pour votre réponse rapide.

    Voici le résultat :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    >Get-Member -InputObject $group
    
       TypeName : System.Xml.XmlElement
    
    Name                 MemberType            Definition                                                                                                        
    ----                 ----------            ----------                                                                                                        
    ToString             CodeMethod            static string XmlNode(psobject instance)                                                                          
    AppendChild          Method                System.Xml.XmlNode AppendChild(System.Xml.XmlNode newChild)                                                       
    Clone                Method                System.Xml.XmlNode Clone(), System.Object ICloneable.Clone()                                                      
    CloneNode            Method                System.Xml.XmlNode CloneNode(bool deep)                                                                           
    CreateNavigator      Method                System.Xml.XPath.XPathNavigator CreateNavigator(), System.Xml.XPath.XPathNavigator IXPathNavigable.CreateNaviga...
    Equals               Method                bool Equals(System.Object obj)                                                                                    
    GetAttribute         Method                string GetAttribute(string name), string GetAttribute(string localName, string namespaceURI)                      
    GetAttributeNode     Method                System.Xml.XmlAttribute GetAttributeNode(string name), System.Xml.XmlAttribute GetAttributeNode(string localNam...
    GetElementsByTagName Method                System.Xml.XmlNodeList GetElementsByTagName(string name), System.Xml.XmlNodeList GetElementsByTagName(string lo...
    GetEnumerator        Method                System.Collections.IEnumerator GetEnumerator(), System.Collections.IEnumerator IEnumerable.GetEnumerator()        
    GetHashCode          Method                int GetHashCode()                                                                                                 
    GetNamespaceOfPrefix Method                string GetNamespaceOfPrefix(string prefix)                                                                        
    GetPrefixOfNamespace Method                string GetPrefixOfNamespace(string namespaceURI)                                                                  
    GetType              Method                type GetType()                                                                                                    
    HasAttribute         Method                bool HasAttribute(string name), bool HasAttribute(string localName, string namespaceURI)                          
    InsertAfter          Method                System.Xml.XmlNode InsertAfter(System.Xml.XmlNode newChild, System.Xml.XmlNode refChild)                          
    InsertBefore         Method                System.Xml.XmlNode InsertBefore(System.Xml.XmlNode newChild, System.Xml.XmlNode refChild)                         
    Normalize            Method                void Normalize()                                                                                                  
    PrependChild         Method                System.Xml.XmlNode PrependChild(System.Xml.XmlNode newChild)                                                      
    RemoveAll            Method                void RemoveAll()                                                                                                  
    RemoveAllAttributes  Method                void RemoveAllAttributes()                                                                                        
    RemoveAttribute      Method                void RemoveAttribute(string name), void RemoveAttribute(string localName, string namespaceURI)                    
    RemoveAttributeAt    Method                System.Xml.XmlNode RemoveAttributeAt(int i)                                                                       
    RemoveAttributeNode  Method                System.Xml.XmlAttribute RemoveAttributeNode(System.Xml.XmlAttribute oldAttr), System.Xml.XmlAttribute RemoveAtt...
    RemoveChild          Method                System.Xml.XmlNode RemoveChild(System.Xml.XmlNode oldChild)                                                       
    ReplaceChild         Method                System.Xml.XmlNode ReplaceChild(System.Xml.XmlNode newChild, System.Xml.XmlNode oldChild)                         
    SelectNodes          Method                System.Xml.XmlNodeList SelectNodes(string xpath), System.Xml.XmlNodeList SelectNodes(string xpath, System.Xml.X...
    SelectSingleNode     Method                System.Xml.XmlNode SelectSingleNode(string xpath), System.Xml.XmlNode SelectSingleNode(string xpath, System.Xml...
    SetAttribute         Method                void SetAttribute(string name, string value), string SetAttribute(string localName, string namespaceURI, string...
    SetAttributeNode     Method                System.Xml.XmlAttribute SetAttributeNode(System.Xml.XmlAttribute newAttr), System.Xml.XmlAttribute SetAttribute...
    Supports             Method                bool Supports(string feature, string version)                                                                     
    WriteContentTo       Method                void WriteContentTo(System.Xml.XmlWriter w)                                                                       
    WriteTo              Method                void WriteTo(System.Xml.XmlWriter w)                                                                              
    Item                 ParameterizedProperty System.Xml.XmlElement Item(string name) {get;}, System.Xml.XmlElement Item(string localname, string ns) {get;}    
    cn                   Property              System.Object[] cn {get;}
    Je vois bien ma propriété cn et je n'arrive pas à comprendre pourquoi, lorsque je fais un echo $group.cn j'ai bien la valeur attendue alors que lorsque je l'utilise dans Get-AdGroup, au lieu de mettre la valeur, il met system.xml.xmlelement.cn.

    En gros, j'ai l'impression que des fois il met la valeur du champ, des fois il met son type ...

    J'ai tenté le trace-commande sur le get-adgroup, voici le résultat
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    DÉBOGUER*: ParameterBinding Information: 0 : BIND NAMED cmd line args [Get-ADGroup]
    DÉBOGUER*: ParameterBinding Information: 0 : BIND POSITIONAL cmd line args [Get-ADGroup]
    DÉBOGUER*: ParameterBinding Information: 0 : BIND cmd line args to DYNAMIC parameters.
    DÉBOGUER*: ParameterBinding Information: 0 :     DYNAMIC parameter object: [Microsoft.ActiveDirectory.Management.Commands.GetADGroupParameterSet]
    DÉBOGUER*: ParameterBinding Information: 0 :     BIND NAMED args to DYNAMIC parameters
    DÉBOGUER*: ParameterBinding Information: 0 :         BIND arg [System.Xml.XmlElement.cn] to parameter [Identity]
    DÉBOGUER*: ParameterBinding Information: 0 :             COERCE arg to [Microsoft.ActiveDirectory.Management.ADGroup]
    DÉBOGUER*: ParameterBinding Information: 0 :                 Trying to convert argument value from System.String to Microsoft.ActiveDirectory.Management.ADGro
    up
    DÉBOGUER*: ParameterBinding Information: 0 :                 CONVERT arg type to param type using LanguagePrimitives.ConvertTo
    DÉBOGUER*: ParameterBinding Information: 0 :                 CONVERT SUCCESSFUL using LanguagePrimitives.ConvertTo: [System.Xml.XmlElement.cn]
    DÉBOGUER*: ParameterBinding Information: 0 :             Executing VALIDATION metadata: [System.Management.Automation.ValidateNotNullAttribute]
    DÉBOGUER*: ParameterBinding Information: 0 :             Executing VALIDATION metadata: [Microsoft.ActiveDirectory.Management.Commands.ValidateNotNullOrEmptyA
    DEntityAttribute]
    DÉBOGUER*: ParameterBinding Information: 0 :             BIND arg [System.Xml.XmlElement.cn] to param [Identity] SUCCESSFUL
    DÉBOGUER*: ParameterBinding Information: 0 :     BIND POSITIONAL args to DYNAMIC parameters
    DÉBOGUER*: ParameterBinding Information: 0 : MANDATORY PARAMETER CHECK on cmdlet [Get-ADGroup]
    DÉBOGUER*: ParameterBinding Information: 0 : CALLING BeginProcessing
    DÉBOGUER*: ParameterBinding Information: 0 : BIND PIPELINE object to parameters: [Out-Default]
    DÉBOGUER*: ParameterBinding Information: 0 :     PIPELINE object TYPE = [System.Management.Automation.ErrorRecord]
    DÉBOGUER*: ParameterBinding Information: 0 :     RESTORING pipeline parameter's original values
    DÉBOGUER*: ParameterBinding Information: 0 :     Parameter [InputObject] PIPELINE INPUT ValueFromPipeline NO COERCION
    DÉBOGUER*: ParameterBinding Information: 0 :     BIND arg [Impossible de trouver un objet avec l’identité «*System.Xml.XmlElement.cn*» sous*: «*DC=ch-condom,D
    C=com*».] to parameter [InputObject]
    DÉBOGUER*: ParameterBinding Information: 0 :         BIND arg [Impossible de trouver un objet avec l’identité «*System.Xml.XmlElement.cn*» sous*: «*DC=ch-cond
    om,DC=com*».] to param [InputObject] SUCCESSFUL
    DÉBOGUER*: ParameterBinding Information: 0 : MANDATORY PARAMETER CHECK on cmdlet [Out-Default]
    DÉBOGUER*: ParameterBinding Information: 0 : BIND NAMED cmd line args [Out-LineOutput]
    DÉBOGUER*: ParameterBinding Information: 0 :     BIND arg [Microsoft.PowerShell.Commands.Internal.Format.ConsoleLineOutput] to parameter [LineOutput]
    DÉBOGUER*: ParameterBinding Information: 0 :         COERCE arg to [System.Object]
    DÉBOGUER*: ParameterBinding Information: 0 :             Parameter and arg types the same, no coercion is needed.
    DÉBOGUER*: ParameterBinding Information: 0 :         BIND arg [Microsoft.PowerShell.Commands.Internal.Format.ConsoleLineOutput] to param [LineOutput] SUCCESSF
    UL
    DÉBOGUER*: ParameterBinding Information: 0 : BIND POSITIONAL cmd line args [Out-LineOutput]
    DÉBOGUER*: ParameterBinding Information: 0 : MANDATORY PARAMETER CHECK on cmdlet [Out-LineOutput]
    DÉBOGUER*: ParameterBinding Information: 0 : CALLING BeginProcessing
    DÉBOGUER*: ParameterBinding Information: 0 : BIND PIPELINE object to parameters: [Out-LineOutput]
    DÉBOGUER*: ParameterBinding Information: 0 :     PIPELINE object TYPE = [System.Management.Automation.ErrorRecord]
    DÉBOGUER*: ParameterBinding Information: 0 :     RESTORING pipeline parameter's original values
    DÉBOGUER*: ParameterBinding Information: 0 :     Parameter [InputObject] PIPELINE INPUT ValueFromPipeline NO COERCION
    DÉBOGUER*: ParameterBinding Information: 0 :     BIND arg [Impossible de trouver un objet avec l’identité «*System.Xml.XmlElement.cn*» sous*: «*DC=ch-condom,D
    C=com*».] to parameter [InputObject]
    DÉBOGUER*: ParameterBinding Information: 0 :         BIND arg [Impossible de trouver un objet avec l’identité «*System.Xml.XmlElement.cn*» sous*: «*DC=ch-cond
    om,DC=com*».] to param [InputObject] SUCCESSFUL
    DÉBOGUER*: ParameterBinding Information: 0 : MANDATORY PARAMETER CHECK on cmdlet [out-lineoutput]
    DÉBOGUER*: ParameterBinding Information: 0 : BIND NAMED cmd line args [Format-Default]
    DÉBOGUER*: ParameterBinding Information: 0 : BIND POSITIONAL cmd line args [Format-Default]
    DÉBOGUER*: ParameterBinding Information: 0 : MANDATORY PARAMETER CHECK on cmdlet [Format-Default]
    DÉBOGUER*: ParameterBinding Information: 0 : CALLING BeginProcessing
    DÉBOGUER*: ParameterBinding Information: 0 : BIND PIPELINE object to parameters: [Format-Default]
    DÉBOGUER*: ParameterBinding Information: 0 :     PIPELINE object TYPE = [System.Management.Automation.ErrorRecord]
    DÉBOGUER*: ParameterBinding Information: 0 :     RESTORING pipeline parameter's original values
    DÉBOGUER*: ParameterBinding Information: 0 :     Parameter [InputObject] PIPELINE INPUT ValueFromPipeline NO COERCION
    DÉBOGUER*: ParameterBinding Information: 0 :     BIND arg [Impossible de trouver un objet avec l’identité «*System.Xml.XmlElement.cn*» sous*: «*DC=ch-condom,D
    C=com*».] to parameter [InputObject]
    DÉBOGUER*: ParameterBinding Information: 0 :         BIND arg [Impossible de trouver un objet avec l’identité «*System.Xml.XmlElement.cn*» sous*: «*DC=ch-cond
    om,DC=com*».] to param [InputObject] SUCCESSFUL
    DÉBOGUER*: ParameterBinding Information: 0 : MANDATORY PARAMETER CHECK on cmdlet [format-default]
    DÉBOGUER*: ParameterBinding Information: 0 : BIND NAMED cmd line args [Set-StrictMode]
    DÉBOGUER*: ParameterBinding Information: 0 :     BIND arg [1] to parameter [Version]
    DÉBOGUER*: ParameterBinding Information: 0 :         Executing DATA GENERATION metadata: [Microsoft.PowerShell.Commands.SetStrictModeCommand+ArgumentToVersion
    TransformationAttribute]
    DÉBOGUER*: ParameterBinding Information: 0 :             result returned from DATA GENERATION: 1.0
    DÉBOGUER*: ParameterBinding Information: 0 :         COERCE arg to [System.Version]
    DÉBOGUER*: ParameterBinding Information: 0 :             Parameter and arg types the same, no coercion is needed.
    DÉBOGUER*: ParameterBinding Information: 0 :         Executing VALIDATION metadata: [Microsoft.PowerShell.Commands.SetStrictModeCommand+ValidateVersionAttribu
    te]
    DÉBOGUER*: ParameterBinding Information: 0 :         BIND arg [1.0] to param [Version] SUCCESSFUL
    DÉBOGUER*: ParameterBinding Information: 0 : BIND POSITIONAL cmd line args [Set-StrictMode]
    DÉBOGUER*: ParameterBinding Information: 0 : MANDATORY PARAMETER CHECK on cmdlet [Set-StrictMode]
    DÉBOGUER*: ParameterBinding Information: 0 : CALLING BeginProcessing
    DÉBOGUER*: ParameterBinding Information: 0 : CALLING EndProcessing
    DÉBOGUER*: ParameterBinding Information: 0 : BIND NAMED cmd line args [Set-StrictMode]
    DÉBOGUER*: ParameterBinding Information: 0 :     BIND arg [1] to parameter [Version]
    DÉBOGUER*: ParameterBinding Information: 0 :         Executing DATA GENERATION metadata: [Microsoft.PowerShell.Commands.SetStrictModeCommand+ArgumentToVersion
    TransformationAttribute]
    DÉBOGUER*: ParameterBinding Information: 0 :             result returned from DATA GENERATION: 1.0
    DÉBOGUER*: ParameterBinding Information: 0 :         COERCE arg to [System.Version]
    DÉBOGUER*: ParameterBinding Information: 0 :             Parameter and arg types the same, no coercion is needed.
    DÉBOGUER*: ParameterBinding Information: 0 :         Executing VALIDATION metadata: [Microsoft.PowerShell.Commands.SetStrictModeCommand+ValidateVersionAttribu
    te]
    DÉBOGUER*: ParameterBinding Information: 0 :         BIND arg [1.0] to param [Version] SUCCESSFUL
    DÉBOGUER*: ParameterBinding Information: 0 : BIND POSITIONAL cmd line args [Set-StrictMode]
    DÉBOGUER*: ParameterBinding Information: 0 : MANDATORY PARAMETER CHECK on cmdlet [Set-StrictMode]
    DÉBOGUER*: ParameterBinding Information: 0 : CALLING BeginProcessing
    DÉBOGUER*: ParameterBinding Information: 0 : CALLING EndProcessing
    DÉBOGUER*: ParameterBinding Information: 0 : BIND NAMED cmd line args [Set-StrictMode]
    DÉBOGUER*: ParameterBinding Information: 0 :     BIND arg [1] to parameter [Version]
    DÉBOGUER*: ParameterBinding Information: 0 :         Executing DATA GENERATION metadata: [Microsoft.PowerShell.Commands.SetStrictModeCommand+ArgumentToVersion
    TransformationAttribute]
    DÉBOGUER*: ParameterBinding Information: 0 :             result returned from DATA GENERATION: 1.0
    DÉBOGUER*: ParameterBinding Information: 0 :         COERCE arg to [System.Version]
    DÉBOGUER*: ParameterBinding Information: 0 :             Parameter and arg types the same, no coercion is needed.
    DÉBOGUER*: ParameterBinding Information: 0 :         Executing VALIDATION metadata: [Microsoft.PowerShell.Commands.SetStrictModeCommand+ValidateVersionAttribu
    te]
    DÉBOGUER*: ParameterBinding Information: 0 :         BIND arg [1.0] to param [Version] SUCCESSFUL
    DÉBOGUER*: ParameterBinding Information: 0 : BIND POSITIONAL cmd line args [Set-StrictMode]
    DÉBOGUER*: ParameterBinding Information: 0 : MANDATORY PARAMETER CHECK on cmdlet [Set-StrictMode]
    DÉBOGUER*: ParameterBinding Information: 0 : CALLING BeginProcessing
    DÉBOGUER*: ParameterBinding Information: 0 : CALLING EndProcessing
    DÉBOGUER*: ParameterBinding Information: 0 : BIND NAMED cmd line args [Set-StrictMode]
    DÉBOGUER*: ParameterBinding Information: 0 :     BIND arg [1] to parameter [Version]
    DÉBOGUER*: ParameterBinding Information: 0 :         Executing DATA GENERATION metadata: [Microsoft.PowerShell.Commands.SetStrictModeCommand+ArgumentToVersion
    TransformationAttribute]
    DÉBOGUER*: ParameterBinding Information: 0 :             result returned from DATA GENERATION: 1.0
    DÉBOGUER*: ParameterBinding Information: 0 :         COERCE arg to [System.Version]
    DÉBOGUER*: ParameterBinding Information: 0 :             Parameter and arg types the same, no coercion is needed.
    DÉBOGUER*: ParameterBinding Information: 0 :         Executing VALIDATION metadata: [Microsoft.PowerShell.Commands.SetStrictModeCommand+ValidateVersionAttribu
    te]
    DÉBOGUER*: ParameterBinding Information: 0 :         BIND arg [1.0] to param [Version] SUCCESSFUL
    DÉBOGUER*: ParameterBinding Information: 0 : BIND POSITIONAL cmd line args [Set-StrictMode]
    DÉBOGUER*: ParameterBinding Information: 0 : MANDATORY PARAMETER CHECK on cmdlet [Set-StrictMode]
    DÉBOGUER*: ParameterBinding Information: 0 : CALLING BeginProcessing
    DÉBOGUER*: ParameterBinding Information: 0 : CALLING EndProcessing
    Alors là, j'avoue que c'est un peu du chinois pour moi oO

  4. #4
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Gers (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2013
    Messages : 71
    Points : 84
    Points
    84
    Par défaut
    J'ai trouvé !!!!

    Mon fichier xml ressemble à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <groups>
    <cn>uf1</cn>
    <cn>uf2</cn>
    </groups>
    et donc, mon $groups.cn retournait systématiquement les 2 valeurs ...

    Il suffit juste que je code mon xml de la sorte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <groups>
    <cn1>uf1</cn1>
    <cn2>uf2</cn2>
    </groups>
    Et le tour est joué

    Merci pour l'aide

  5. #5
    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
    Get-Member permet d'afficher la structure des propriétés/méthodes d'un objet :
    Citation Envoyé par samche2000 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cn  Property System.Object[] cn {get;}
    Les crochets associés au nom de type, indique un tableau, ici un tableau d'objet.
    Citation Envoyé par samche2000 Voir le message
    En gros, j'ai l'impression que des fois il met la valeur du champ, des fois il met son type ...
    Comme tu l'as trouvé, ici le soucis est que tu passes un tableau d'objet, l'appel à Echo parcourt ce tableau et appel en interne la méthode ToString() sur chaque élément.
    C'est pourquoi il y a une différence entre l'affichage de la collection (la valeur contenue) et son usage en tant que paramètre (le type attendu).
    Citation Envoyé par samche2000 Voir le message
    Alors là, j'avoue que c'est un peu du chinois pour moi oO
    Au début, pour moi aussi cela en était. Il faut tout de même avoir qq connaissance sur le dev dotnet, la brique de base de Powershell.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DÉBOGUER*: ParameterBinding Information: 0 :     BIND arg [Impossible de trouver un objet avec l’identité «*System.Xml.XmlElement.cn*» sous*: «*DC=ch-condom,D
    C=com*».] to parameter [InputObject]
    Dans ton cas, la valeur du paramètre est bien renseigné, mais avec le nom du type et pas avec le contenu de l'élément que tu manipules (un nom de cn).
    Du coup le cmdlet poursuit son traitement, car la liaison de paramètre (parameter binding) réussie, et recherche un cn ayant la valeur 'System.Xml.XmlElement.cn'.
    Citation Envoyé par samche2000 Voir le message
    Il suffit juste que je code mon xml de la sorte
    Ou que tes instructions tiennent compte de la structure que tu manipulais, a savoir un tableau.

Discussions similaires

  1. VBS aide pour compter des valeurs dans des fichiers xml
    Par jorge91450 dans le forum VB.NET
    Réponses: 1
    Dernier message: 09/01/2013, 13h28
  2. recuperation de valeur dans des champ generer
    Par gabi1202 dans le forum Langage
    Réponses: 1
    Dernier message: 24/09/2011, 11h58
  3. lire des valeurs dans un flux xml
    Par zooffy dans le forum ASP.NET
    Réponses: 9
    Dernier message: 03/04/2009, 14h07
  4. Valeur par défaut dans des champs
    Par Winguy dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/04/2008, 04h18
  5. Disparition de valeurs dans des champs
    Par Paxaranne dans le forum Designer
    Réponses: 4
    Dernier message: 26/09/2007, 22h00

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