Flash info

"Those who forget to script are doomed to repeat their work."

Jeffery Hicks (PowerShell MVP)

 
Aide mémoire - *-Object
Écrit par Arnaud Petitjean [MVP]   
12-12-2006
Compare-Object
ForEach-Object Group-Object

 


NOM
    Compare-Object
    
RÉSUMÉ
    Compare deux jeux d'objets.
    
    
SYNTAXE
    Compare-Object [-referenceObject] <PSObject[]> [-differenceObject] <PSObject[]> [-syncWindow <int>] [-property <Object[]>] [-caseSensitive] [-culture <string>] [-excludeDifferent] [-includeEqual] [-passThru] [<CommonParameters>]
    
    
DESCRIPTION DÉTAILLÉE
    Compare deux jeux d'objets. Un jeu d'objets correspond au jeu des références et l'autre au jeu des différences.
    
    Le résultat de la comparaison indique si une valeur de propriété est apparue uniquement dans l'objet du jeu de références (indiqué par le symbole < =), uniquement dans l'objet de différences (indiqué par le symbole = >) ou, si le paramètre IncludeEqual est spécifié, dans les deux objets (cas indiqué par le symbole  ==).
    

PARAMÈTRES
    -referenceObject <PSObject[]>
        Les objets utilisés comme référence pour la comparaison.
        
    -differenceObject <PSObject[]>
        Les objets à comparer à ceux qui sont spécifiés comme objets de référence.
        
    -syncWindow <int>
        Définit une zone de recherche où une tentative de resynchronisation de l'ordre est effectuée en cas de discordance.
        
    -property <Object[]>
        Spécifie les propriétés des objets de référence et de différence à comparer.
        
    -caseSensitive <SwitchParameter>
        Indique que les comparaisons doivent respecter la casse.
        
    -culture <string>
        Spécifie la culture à utiliser pour les comparaisons.
        
    -excludeDifferent <SwitchParameter>
        Affiche uniquement les caractéristiques des objets comparés qui sont égaux.
        
    -includeEqual <SwitchParameter>
        Affiche les caractéristiques des objets comparés qui sont égaux. Par défaut, seules les caractéristiques qui diffèrent entre l'objet de référence et de différence sont affichées.
        
    -passThru <SwitchParameter>
        Passe l'objet créé par cette applet de commande le long du pipeline. Par défaut, cette applet de commande ne passe aucun objet le long du pipeline.
        
    <CommonParameters>
        Cette applet de commande prend en charge les paramètres courants : -Verbose, -Debug,
        -ErrorAction, -ErrorVariable et -OutVariable. Pour plus d'informations,
        tapez « get-help about_commonparameters ».
    
    -------------------------- EXEMPLE 1 --------------------------
    
    C:\PS>compare-object -referenceobject $(get-content C:\test\testfile1.txt) -differenceobject $(get-content C:\test\testfile2.txt)
    
    Cette commande compare le contenu de deux fichiers texte. Elle affiche uniquement les lignes qui apparaissent dans l'un ou l'autre fichier, mais pas dans les deux fichiers.
    
    
    
    
    -------------------------- EXEMPLE 2 --------------------------
    
    C:\PS>compare-object -referenceobject $(get-content C:\Test\testfile1.txt) -differenceobject $(get-content C:\Test\testfile2.txt) -includeequal
    
    Cette commande compare chaque ligne de contenu dans deux fichiers texte. Elle affiche toutes les lignes de contenu des deux fichiers en indiquant si chaque ligne apparaît uniquement dans textfile1.txt ou textfile2.txt, ou si elle apparaît dans les deux fichiers.
    
    
    
    
    -------------------------- EXEMPLE 3 --------------------------
    
    C:\PS>$processes_before = get-process
    notepad
    $processes_after  = get-process
    compare-object -referenceobject $processes_before -differenceobject $processes_after
    
    Cette commande compare deux jeux d'objets processus. L'applet de commande Get-Process est utilisée pour récupérer les processus qui s'exécutent sur l'ordinateur et les stocker dans la variable $processes_before. Puis une instance de Bloc-notes est démarrée. L'applet de commande Get-Process est réutilisée pour récupérer les processus qui s'exécutent sur l'ordinateur et les stocker dans la variable $processes_after. Sur la dernière ligne, Compare-Object est utilisé pour comparer les deux jeux d'objets processus, en affichant les différences entre eux qui incluent au moins la nouvelle instance de Bloc-notes.
    
    
    
    
REMARQUES
    Pour plus d'informations, tapez : "get-help Compare-Object -detailed".
    Pour obtenir des informations techniques, tapez : "get-help Compare-Object -full".


NOM
    ForEach-Object
   
RÉSUMÉ
    Exécute une opération en fonction de chacun des jeux d'objets d'entrée.
   
   
SYNTAXE
    ForEach-Object [-process] <ScriptBlock[]> [-inputObject <psobject>] [-begin <scriptblock>] [-end <scriptblock>] [<CommonParameters>]
   
   
DESCRIPTION DÉTAILLÉE
    Exécute une opération en fonction de chacun des jeux d'objets d'entrée. Les objets d'entrée peuvent être dirigés vers l'applet de commande ou spécifiés à l'aide du paramètre InputObject.
    L'opération à exécuter est décrite dans un bloc de script qui est fourni à l'applet de commande en tant que valeur du paramètre Process. Le bloc de script peut contenir n'importe quel script Windows PowerShell.
    Dans le bloc de script, l'objet d'entrée actif est représenté par la variable $_.
    En plus du bloc de script qui décrit les opérations à exécuter sur chaque objet d'entrée, vous pouvez fournir deux blocs de script supplémentaires. L'un, spécifié en tant que valeur du paramètre Begin, s'exécute avant le traitement du premier objet d'entrée. L'autre, spécifié en tant que valeur du paramètre End, s'exécute après le traitement du dernier objet d'entrée.
    Les résultats de l'évaluation de tous les blocs de script, y compris ceux spécifiés avec Begin et End, sont passés à travers le pipeline.
   

PARAMÈTRES
    -process <ScriptBlock[]>
        Spécifie le bloc de script qui est appliqué à chaque objet entrant.
       
    -inputObject <psobject>
        Accepte un objet que le bloc de script spécifié dans le paramètre Process affectera. Entrez une variable contenant les objets ou tapez une commande ou une expression qui obtient les objets.
       
    -begin <scriptblock>
        Spécifie un bloc de script à exécuter avant de traiter tout objet d'entrée.
       
    -end <scriptblock>
        Spécifie un bloc de script à exécuter après le traitement de tous les objets d'entrée.
       
    <CommonParameters>
        Cette applet de commande prend en charge les paramètres courants : -Verbose, -Debug,
        -ErrorAction, -ErrorVariable et -OutVariable. Pour plus d'informations,
        tapez « get-help about_commonparameters ».
   
    -------------------------- EXEMPLE 1 --------------------------
   
    C:\PS>30000,56798,12432 | foreach-object -process {$_/1024}
   
    Cette commande accepte un tableau d'entiers, divise chacun d'eux par 1 024 et affiche les résultats.
   
   
   
   
    -------------------------- EXEMPLE 2 --------------------------
   
    C:\PS>get-childitem C:\ | foreach-object -process { $_.length / 1024 }
   
    Cette commande récupère les fichiers et répertoires situés à la racine du lecteur C:, et retourne et affiche la taille de chacun d'eux. Les zéros représentent les répertoires dans lesquels aucune taille de fichier n'était disponible.
   
   
   
   
    -------------------------- EXEMPLE 3 --------------------------
   
    C:\PS>$events = get-eventlog -logname system -newest 1000
    $events |
    foreach-object -begin {get-date}
    -process {out-file -filepath events.txt -append -inputobject $_.message}
    -end {get-date}
   
    Cette commande récupère les 1 000 événements les plus récents du journal système et les stocke dans la variable $events. Elle dirige ensuite les événements vers l'applet de commande ForEach-Object. Le paramètre Begin affiche les date et heure actuelles. Ensuite, le paramètre Process utilise l'applet de commande Out-File pour créer un fichier texte nommé events.txt et stocke la propriété de message de chacun des événements dans ce fichier. Enfin, le paramètre End est utilisé pour afficher la date et l'heure une fois tout le traitement terminé.
   
   
   
   
    -------------------------- EXEMPLE 4 --------------------------
   
    C:\PS>get-itemproperty -path hkcu:\Network\* |
     foreach-object {set-itemproperty -path $_.pspath -name RemotePath
    -value $_.RemotePath.ToUpper();}
   
    Cette commande met à jour un ensemble d'entrées du Registre en utilisant l'applet de commande Set-ItemProperty. Les entrées du Registre spécifient le chemin UNC de lecteurs réseau mappés sur l'ordinateur. Elle met en majuscules les caractères utilisés dans le chemin UNC. Dans un scénario réel, vous pouvez parfois être amené à modifier le nom du serveur ou un autre composant du chemin d'accès.
   
    Étant donné que l'applet de commande Set-ItemProperty affecte une seule propriété, l'applet de commande ForEach-Object est utilisée pour appeler Set-ItemProperty pour chaque propriété (des entrées du Registre, dans le cas présent) qui est modifiée. Le nom des entrées du Registre, qui est RemotePath, se trouve dans HKCU\Network \<lettre_lecteur_mappé>. Les entrées sont récupérées à l'aide de l'applet de commande Get-ItemProperty et sont dirigées en tant que ForEach-Object. Dans l'appel à Set-ItemProperty dans ForEach-Object, la variable $_ conserve une référence à l'entrée du Registre actuelle en cours de traitement. La valeur de la propriété PSPath est la clé du Registre qui contient l'entrée actuelle. La propriété RemotePath, de type System.String, inclut la méthode ToUpper utilisée pour mettre la valeur de l'entrée en majuscules.
   
   
   
   
REMARQUES
    Pour plus d'informations, tapez : "get-help ForEach-Object -detailed".
    Pour obtenir des informations techniques, tapez : "get-help ForEach-Object -full".


NOM
    Group-Object
   
RÉSUMÉ
    Regroupe les objets qui contiennent la même valeur pour les propriétés spécifiées.
   
   
SYNTAXE
    Group-Object [[-property] <Object[]>] [-caseSensitive] [-noElement] [-culture <string>] [-inputObject <psobject>] [<CommonParameters>]
   
   
DESCRIPTION DÉTAILLÉE
    Regroupe les objets qui contiennent la même valeur pour les propriétés spécifiées. Par défaut, l'applet de commande crée un objet GroupInfo pour les jeux d'objets d'entrée qui partagent la même valeur pour les propriétés spécifiées dans le paramètre Property. L'objet GroupInfo a une propriété Group. Cette propriété est une collection de tous les objets d'entrée qui sont membres du groupe représentée par l'objet GroupInfo. Le nombre de membres d'un groupe est stocké dans la propriété Count de l'objet GroupInfo correspondant et le groupe a un nom (Name) qui est dérivé de la valeur de leurs propriétés communes.
    Pour omettre les objets d'entrée des résultats, spécifiez le paramètre NoElement. Les résultats auront la forme d'un tableau d'objets GroupInfoNoElement dont chacun a une propriété Group vide.
    Par défaut, les comparaisons effectuées pour établir des groupes ne respectent pas la casse. Vous pouvez modifier ceci en spécifiant le paramètre CaseSensitive.
   

PARAMÈTRES
    -property <Object[]>
        Spécifie la propriété ou la liste de propriétés utilisée pour regrouper les objets d'entrée.
       
    -caseSensitive <SwitchParameter>
        Spécifie que la casse doit être prise en compte pour déterminer si les valeurs de propriété sont égales en vue du groupage.
       
    -noElement <SwitchParameter>
        Détermine si les objets de sortie contiennent les éléments de chaque de groupe.
       
    -culture <string>
        Spécifie la culture à utiliser lors de l'exécution des comparaisons de chaînes.
       
    -inputObject <psobject>
        Spécifie les objets à regrouper. Entrez une variable contenant les objets ou tapez une commande ou une expression qui obtient les objets.
       
    <CommonParameters>
        Cette applet de commande prend en charge les paramètres courants : -Verbose, -Debug,
        -ErrorAction, -ErrorVariable et -OutVariable. Pour plus d'informations,
        tapez « get-help about_commonparameters ».
   
    -------------------------- EXEMPLE 1 --------------------------
   
    C:\PS>get-childitem *.doc | group-object -property length
   
    Cette commande affiche une liste de tous les fichiers dans l'emplacement actuel qui ont une extension .doc et les regroupe par taille.
   
   
   
   
    -------------------------- EXEMPLE 2 --------------------------
   
    C:\PS>get-childitem | sort-object -property extension | group-object -property extension
   
    Cette commande affiche une liste de tous les fichiers dans l'emplacement actuel, triés puis regroupés par extension de fichier. Notez que l'opération de tri a été exécutée avant l'opération de regroupement.
   
   
   
   
    -------------------------- EXEMPLE 3 --------------------------
   
    C:\PS>1..35 | group-object -property {$_ % 2},{$_ % 3}
   
    Cette commande affiche les entiers 1 à 35, regroupés par le reste lorsqu'ils sont divisés par 2 ou 3. Elle montre que l'applet de commande peut accepter plusieurs blocs de script comme entrée.
   
   
   
   
    -------------------------- EXEMPLE 4 --------------------------
   
    C:\PS>$events = get-eventlog -logname system -newest 1000
    $events | group-object -property eventID
   
    Cette commande affiche les 1 000 entrées les plus récentes du journal des événements système, regroupées par ID de l'événement. Elle utilise l'applet de commande Get-EventLog pour extraire et stocker les événements dans la variable $events. Dans la deuxième ligne, elle dirige le long du pipeline les événements stockés vers l'applet de commande Group-Object, à l'aide du paramètre Property pour spécifier que les événements doivent être regroupés d'après la valeur de leurs propriétés eventID. Dans la sortie, la colonne Count représente le nombre d'entrées dans chaque de groupe, la colonne Name représente les valeurs EventID qui définissent chacune un groupe et la colonne Group représente la propriété de l'objet de sortie qui contient un tableau des objets dans chaque groupe.
   
   
    Count Name                      Group
    ----- ----                      -----
    247   7036                      {FABRIKAM, FABRIKAM, FABRIKAM,..
    361   30                        {FABRIKAM, FABRIKAM, FABRIKAM,..
   
    -------------------------- EXEMPLE 5 --------------------------
   
    C:\PS>get-process | group-object -property company -noelement
   
    Cette commande affiche une liste de tous les processus sur l'ordinateur, regroupés par le nom de la société dont l'application est associée au processus. Dans la mesure où le paramètre NoElement est utilisé, l'objet retourné par la commande n'inclut pas les objets processus qui ont été regroupés.
   
   
   
   
    -------------------------- EXEMPLE 6 --------------------------
   
    C:\PS>get-eventlog -logname system -newest 1000 |
    group-object -property {$_.TimeWritten - $_.TimeGenerated}
   
    Cette commande affiche les 1 000 entrées les plus récentes du journal des événements système, regroupées par heure, entre le moment où elles ont été générées et le moment où elles ont été écrites dans le journal. La commande utilise l'applet de commande Get-EventLog pour récupérer les entrées et les dirige le long du pipeline vers l'applet de commande Group-Object. La valeur du paramètre Property est spécifiée en tant que bloc de script (une expression entre accolades). Le résultat de l'évaluation du bloc de script correspond à l'heure comprise entre le moment où l'entrée de fichier journal a été générée et le moment où elle a été écrite dans le journal. Cette valeur est utilisée pour regrouper les 1 000 événements les plus récents. Cette commande montre que vous pouvez fournir la valeur du paramètre Property en tant que bloc de script.
   
   
   
   
    -------------------------- EXEMPLE 7 --------------------------
   
    C:\PS>get-childitem | group-object extension -noelement
   
    Cette commande détermine les extensions de fichier présentes dans le répertoire actif sans récupérer les fichiers appartenant à chaque de groupe.
   
   
   
   
    -------------------------- EXEMPLE 8 --------------------------
   
    C:\PS>$events = get-eventlog -logname application -newest 500
    $groups = group-object -inputobject $events -property entrytype,source
    $groups | get-member
    $groups | select-object -expandproperty group
   
    Cette commande crée des objets GroupInfo qui représentent le regroupement d'événements du journal d'événements de l'application. L'applet de commande Get-EventLog est utilisée pour extraire les 500 événements les plus récents du journal d'événements de l'application et les stocker dans la variable $events. La variable $events est passée comme entrée à l'applet de commande Group-Object et les événements sont regroupés d'après le type d'entrée et la source d'événements, et les groupes résultants sont stockés dans la variable $groups. La variable $groups est dirigée vers l'applet de commande Get-Member pour afficher des informations la concernant. Dans la dernière ligne de la commande, la variable $groups est dirigée vers l'applet de commande Select-Object. Le paramètre ExpandProperty permet d'afficher les informations sur les événements stockés dans la propriété Group des objets GroupInfo contenus dans la variable $groups.
   
   
   
   
REMARQUES
    Pour plus d'informations, tapez : "get-help Group-Object -detailed".
    Pour obtenir des informations techniques, tapez : "get-help Group-Object -full".

Dernière mise à jour : ( 12-12-2006 )
 
© 2017 PowerShell-Scripting.com