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 :

Ajouter un élément à un objet [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Homme Profil pro
    Assistant Administrateur système et réseaux
    Inscrit en
    Novembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistant Administrateur système et réseaux

    Informations forums :
    Inscription : Novembre 2019
    Messages : 12
    Points : 17
    Points
    17
    Par défaut Ajouter un élément à un objet
    Bonjour,

    J'ai un script qui compare le contenue de 2 listes en fonction du nom et prénom (si le nom et prénom dans les 2 liste est identique je n'ajoute pas cette ligne dans mon tb).
    A la suite de la comparaison j'ajoute dans un objet le nom et prénom quand celui ci n'apparait pas 2 fois . D'habitude j'ajoute des éléments à mon objet avec cette ligne:
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    "$item | Add-Member -MemberType NoteProperty -Name NOM -Value $nom -Force"
    Mais ici ça ne fonctionne pas je ne comprend pas pourquoi.
    Pour réaliser la comparaison j'utilise un double foreach ex :
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    foreach (element in liste A){
    instructions 1
    instruction 2
    instruction 3
    foreach (element in liste B)
    instruction 1
    instruction 2
    instruction 3
    }
    Et pour ajouter une nouvelle ligne dans mon objet j'utilise une condition qui test si ma variable booléen (si la variable booléen est false on ajoute dans une nouvelle ligne à l'objet).
    A la fin du script je dois exporter une liste contenant tous les nom est prénom qui ne sont pas en double.
    voici mon script :

    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
    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
    function synchro-liste{
        param (
            [parameter(position=0,mandatory=$true)]
            [string]$liste,
            [parameter(Position=1,Mandatory=$true)]
            [string]$listediff
        )
     
        #déclaration d'une variable tableau
        $synchro=@()
        #regex
        $pattern = '[^a-zA-Z]'
        $date= get-date -Format " dd-MM-yyyy HH:mm"
     
     
     
        #Récup contenu fichier "liste diffusion MR"
        $chemin= "C:\Users\Bruner\Documents\script\" + $listediff
        $path= "C:\Users\Bruner\Document\Script" + $liste
        #test si le fichier existe
        $testfic = test-path -Path $chemin,$path
        if ($testfic -eq $true) {
        #import-csv se rend au chemin spécifié et récupère le contenue du fichier csv
        $listeMR= Import-Csv -Path $chemin -Encoding UTF8 -Delimiter ";"
        $listesortis= Import-Csv -Path $path -Encoding UTF8 -Delimiter ";"
        }else {
            $synchro += "Une erreur c'est produite lors de récupération de: $listediff. $date"| Select-Object @{Name="Erreur";Expression={$_}}        
            $synchro | Export-Csv -path "C:\Users\Bruner\Document\script\MAJ-$liste-$listediff" -Encoding UTF8 -NoTypeInformation
            exit
         }
     
        Foreach($element in $listeMR){
        $present= $true
            $objet= New-Object PSObject
            #déclaration en mémoire d'une varibale objet
            $nom= $element.NOM
            $prenom=  $element.PRENOM
            $nom = $nom -replace '\-|\s|_|\+|\*',''
            $prenom = $prenom -replace '\-|\s|_|\+|\*',' '
        Foreach($elmentMR in $liste){
            if ($elementMR.NOM -eq $null -or $elementMR.PRENOM -eq $null) {
                $nomMR = $elementMR.NOM
                $prenomMR = $elementMR.PRENOM
            }else {
                $prenomMR = $prenomMR -replace '\-|\s|_|\+|\*',' '
                $nomMR = $nomMR -replace '\-|\s|_|\+|\*',''  
                }
     
            if ($nom -eq $nomMR -and $prenom -eq $prenomMR) {
                    $present= $flase
                    break
                }
     
        }
     
     
        if ($present -eq $true) {
            #$true / on supprime dans liste diff
            $objet | Add-Member -Name NOM -MemberType NoteProperty -Value $nom -Force
            $objet | Add-Member -Name PRENOM -MemberType NoteProperty -Value $prenom -Force
           }
     
     
        $synchro += $objet
        }
     
        foreach($ligne in $liste){
            $present= $false
            $item=New-Object PSObject
            if ($ligne.NOM -eq $null -or $ligne.PRENOM -eq $null) {
                $nom= $ligne.NOM
                $prenom = $ligne.PRENOM
     
            }else {
                $nom = $nom -replace '\-|\s|_|\+|\*',''
                $prenom = $prenom -replace '\-|\s|_|\+|\*',' '   
              }
     
            foreach($ligneMR in $listeMR) {
                $nomMR= $ligneMR.NOM
                $prenomMR= $ligneMR.PRENOM            
                $nomMR = $nomMR -replace '\-|\s|_|\+|\*',''
                $prenomMR = $prenomMR -replace '\-|\s|_|\+|\*',' '
                if ($nom -eq $nomMR -and $prenom -eq $prenomMR) {
                    $present = $true
                    break
                }    
     
            }
     
            if($present -eq $true){
               continue
            } else {
                $item | Add-Member -MemberType NoteProperty -Name NOM -Value $nom -Force
                $item | Add-Member -MemberType NoteProperty -Name NOM -Value $prenom -Force
     
            }
     
            $synchro+= $item
     
        }
     
        $synchro |Select-Object NOM,PRENOM | Export-Csv -path "C:\Users\bruner\document\script\listetest.csv" -Encoding UTF8 -NoTypeInformation -Delimiter ";"   
     
     
    }

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    synchro-liste -liste "liste2.csv" -listediff "test.csv"

  2. #2
    Membre à l'essai
    Homme Profil pro
    Assistant Administrateur système et réseaux
    Inscrit en
    Novembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistant Administrateur système et réseaux

    Informations forums :
    Inscription : Novembre 2019
    Messages : 12
    Points : 17
    Points
    17
    Par défaut
    la première partie de mon script fonctionne se qui ne va pas est dans la deuxième partie quand je fais ça :

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if($present -eq $false) {
               $item | Add-Member -Name NOM -MemberType NoteProperty -Value $nom -Force
               $item | Add-Member -Name PRENOM -MemberType NoteProperty -Value $prenom -Force
    }

    Même quand la condition est vérifié le script n'ajoute pas le nom et prénom à l'objet.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Assistant Administrateur système et réseaux
    Inscrit en
    Novembre 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Assistant Administrateur système et réseaux

    Informations forums :
    Inscription : Novembre 2019
    Messages : 12
    Points : 17
    Points
    17
    Par défaut
    c'est bon problème résolu
    c'était juste un problème de syntax

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    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 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if($present -eq $false) {
        $item | Add-Member -Name NOM -MemberType NoteProperty -Value $nom -Force
        $item | Add-Member -Name PRENOM -MemberType NoteProperty -Value $prenom -Force
    }
    Oui je ne comprenais pas bien.
    Ca à l'air compliqué pour un besoin qui semble assez simple.

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

Discussions similaires

  1. Ajouter un élément dans un objet XML en javaScript
    Par l_informaticien dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/06/2015, 10h37
  2. Réponses: 4
    Dernier message: 19/03/2015, 18h31
  3. [JSON] ajouter des éléments à un objet
    Par beegees dans le forum jQuery
    Réponses: 5
    Dernier message: 25/07/2014, 20h45
  4. Réponses: 22
    Dernier message: 04/04/2007, 15h24
  5. [xsl] Ajouter 1 élément à la page xml
    Par ametisse dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 10/03/2003, 12h15

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