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 :

Équivalent en powershell ? (compare 2 Array) [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    388
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Novembre 2004
    Messages : 388
    Par défaut Équivalent en powershell ? (compare 2 Array)
    Bonjour,

    J'ai trouvé sur le site ci-dessous ce que j'aimerais faire en powershell, mais ...
    https://stackoverflow.com/questions/...e-2-arraylists

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Collection<String> listOne =new ArrayList(Arrays.asList("a","b","c","d","e","f","g"));
        Collection<String> listTwo =new ArrayList(Arrays.asList("a","b","d","e","f","gg","h"));
     
     
        List<String> sourceList =new ArrayList<String>(listOne);
        List<String> destinationList =new ArrayList<String>(listTwo);
     
     
        sourceList.removeAll( listTwo );
        destinationList.removeAll( listOne );
     
     
     
        System.out.println( sourceList );
        System.out.println( destinationList );


    Et j'aimerais faire la comparaison de deux tableaux

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $Folder1 = "C:\....\....."
    $Folder2 = C:\....\.....\....
     
     
    $FilesList1 = (Get-ChildItem $Folder1 -Recurse -File) | select Name ,FullName, Length, LastWriteTime
    $FilesList2 = (Get-ChildItem $Folder2 -Recurse -File) | select Name ,FullName, Length, LastWriteTime

    J'ai testé pas mal de chose qui ne fonctionne pas
    qui aurais une idée pour faire la conversion en powershell .... ?

    En vous remerciant d'avance

  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,
    regarde si la classe hashSet correspond à ton besoin.

  3. #3
    Membre éprouvé
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    388
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Novembre 2004
    Messages : 388
    Par défaut
    Je vois quand powershell il ne faut pas chercher très loin.

    Il suffisait de faire : Compare-Object $FilesList1 $FilesList2.

    C'est bête d'avoir cherché aussi longtemps un truc aussi c..

  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
    Citation Envoyé par troxsa Voir le message
    Il suffisait de faire : Compare-Object $FilesList1 $FilesList2.
    Oui mais ce cmdlet nécessite de filtrer le résultat sur la propriété ajoutée SideIndicator, là où la classe hashset renvoi le résultat en une passe.
    [edit]
    Un exemple :
    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
     
    #Nécessite de typer la collections
    [string[]]$T=@('a','b','c','d','e','f','g')
    [string[]]$T2=@('a','b','d','e','f','GG','h')
     
     
    $CaseInsensitive=[System.Collections.Generic.HashSet[String]]::new($T,[StringComparer]::InvariantCultureIgnoreCase)
     
     
     
     
    # Eléments Commun
    #$CaseInsensitive.IntersectWith($T2)
     
     
    #Différence
    $CaseInsensitive.ExceptWith($T2)
    $CaseInsensitive
    # c
    # g
     
     
    $CaseInsensitive=[System.Collections.Generic.HashSet[String]]::new($T2,[StringComparer]::InvariantCultureIgnoreCase)
    $CaseInsensitive.ExceptWith($T)
    $CaseInsensitive
    # GG
    # h

  5. #5
    Membre éprouvé
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    388
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Novembre 2004
    Messages : 388
    Par défaut
    Bonjour Laurent,

    ça ne fonctionne pas, certainement du a ma version de powershell (3.0) (Windows 7 hey oui .... )

  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 troxsa Voir le message
    ça ne fonctionne pas, certainement du a ma version de powershell (3.0) (Windows 7 hey oui .... )
    Ah zut.
    Si Out-GridView fonctionne, il se peut que ce soit la syntaxe du parseur 5.1 Windows 10 que j'utilise qui pose problème, si j'ai le temps je testerais sur une WM Seven.

  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
    Des fois je me demande si un code plus simple ne peux pas répondre au besoin ?

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $a1 = "A","b", "c", "d", "e", "f", "g", "x"
    $a2 = "a","b", "d", "e", "f", "gg", "h"
     
    $b1 = $a1 | Where-Object {$a2 -notcontains $_}
    $b2 = $a2 | Where-Object {$a1 -notcontains $_}

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

Discussions similaires

  1. comparer 2 array oui / non
    Par jeorcal dans le forum Langage
    Réponses: 11
    Dernier message: 05/08/2010, 10h50
  2. Comparer 2 array, array_diff
    Par jeorcal dans le forum Langage
    Réponses: 2
    Dernier message: 16/07/2010, 12h42
  3. Comparer deux array
    Par snyfir dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 12/02/2009, 06h54
  4. Comparer 2 arrays
    Par virtuadrack dans le forum C++
    Réponses: 2
    Dernier message: 12/04/2007, 23h21

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