La commande PowerShell Compare-Object

Quelques astuces fort utiles, mais parfois ignorées de la cmdlet Compare-Object.
Ce dossier est issu de notre publication IT Pro Magazine (10/10). Pour consulter les schémas et illustrations associés, rendez-vous dans le club abonnés.
Ce n’est pas la première fois que nous abordons la cmdlet PowerShell Compare-Object. Celle-ci comporte un alias diff et s’avère très utile pour comparer deux types d’objets différents (que demander de plus ?). En général, vous voulez comparer une certaine propriété. Voici un exemple standard permettant d’illustrer ce propos :
PS C:\> $now=get-process
PS C:\> calc
PS C:\> $after=get-process
PS C:\> diff $now $after -Property name
name SideIndicator
---- -------------
calc =>
PS C:\>
L’objet $now est un cliché (snapshot) de tous les processus en cours d’exécution. Je démarre ensuite Calculator et je prends un autre cliché. Grâce à Compare- Object, je peux identifier le processus dont l’exécution a été lancée dans l’intervalle. SideIndicator affiche cette information. Mais, qu’en est-il maintenant si je souhaite voir plus de choses sur le processus, peut-être parce que je souhaite arrêter tous les processus qui viennent d’être lancés ? J’ai besoin de dire à Compare-Object de passer l’intégralité de l’objet via le pipeline :
PS C:\> diff $now $after -Property name -passthru
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
87 7 5496 11480 71 1.26 1724 calc
Si je réexécute la cmdlet et que je transmets le résultat vers Get-Member, je peux vérifier que j’obtiens en fait un objet Process. Cela me permet alors d’exécuter ce qui suit :
PS C:\> diff $now $after -Property name -passthru | kill
Voyons quelques autres manières d’employer Compare-Object. J’ai deux dossiers que je souhaite, en quelque sorte, maintenir synchronisés. Les fichiers présents dans folderA doivent aussi figurer dans folderB. Le fait que folderB comporte des fichiers supplémentaires ne pose pas de problèmes, tant qu’il conserve également une copie complète du contenu de folderA. Maintenant, je peux voir s’il y a un écart entre les deux :
PS C:\> $a=dir f:\folderA
PS C:\> $b=dir f:\folderB
PS C:\> $a.count
77
PS C:\> $b.count
76
PS C:\>
Pour les besoins de mon exemple, je vais seulement effectuer la synchronisation sur le nom du fichier :
PS C:\> diff $a $b -property Name
name SideIndicator
---- -------------
a.csv =>
b.csv =>
d.csv =>
w.txt <=
w1.txt <=
winrminfo.txt <=
wmidata.txt <=
Je m’intéresse uniquement aux fichiers présents dans $a mais pas dans $b. Je peux essayer de filtrer la sortie sur SideIndicator, mais je vais passer les objets et regarder uniquement les fichiers présents dans folderA :
PS C:\> diff $a $b -property Name -pass | Where
{$_.DirectoryName -eq «F:\folderA»}
Directory: F:\folderA
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 5/14/2009 4:38 PM 863 w.txt
-a--- 5/14/2009 4:42 PM 266 w1.txt
-a--- 3/3/2009 12:41 PM 3538 winrminfo.txt
-a--- 3/21/2009 4:47 PM 96786 wmidata.txt
Ces fichiers doivent être ajoutés à folderB :
PS C:\> diff $a $b -property Name -pass | Where {$_.
DirectoryName -eq «F:\folderA»} | copy -dest f:\folderB
-passthru
Directory: F:\folderB
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 5/14/2009 4:38 PM 863 w.txt
-a--- 5/14/2009 4:42 PM 266 w1.txt
-a--- 3/3/2009 12:41 PM 63538 winrminfo.txt
-a--- 3/21/2009 4:47 PM 96786 wmidata.txt
Je transfère simplement les objets de type fichier à Copy-Object et j’utilise son paramètre -passthru afin de voir les résultats. Désormais, tous les fichiers dans folderA figurent aussi dans folderB. Il ne faudrait pas beaucoup plus de temps pour effectuer la synchronisation dans les deux sens.
Nous sommes ouverts à tous les thèmes portant sur les services, les solutions et les technologies informatiques d'entreprise. Notre seule condition sera la qualité de votre contribution, quel que soit votre thème de prédilection, actualités, annonces, lancements, stratégie, tutoriaux, trucs et astuces, bonnes pratiques... cette liste n'étant pas exhaustive, stay tuned, au plaisir de collaborer.
Le Guide essentiel de la reprise après sinistreDécouvrez en trois étapes essentielles, comment assurer la continuité de service et la survie de votre entreprise, de la maîtrise des concepts de la reprise sur sinistre et de la haute disponibilité jusqu’au calcul du coût des interruptions de service pour votre entreprise.Téléchargez le guide essentiel de la reprise après sinistre
Ressources Informatiques
Actualités Informatiques
Ciena déploie un réseau 100G de 2 800 km 15/05/2012 | Réseaux | 100G
Dell annonce la deuxième vague de sa 12e génération PowerEdge 15/05/2012 | Dell | Serveur
Scott Thompson, PDG de Yahoo, contraint de démissionner 14/05/2012 | Nomination | Stratégie
Sécurité : Des attaques moins nombreuses mais plus dangereuses selon HP 10/05/2012 | Sécurité | Web
Imagine Cup – Le projet Cap Street en route vers Sydney 07/05/2012 | Imagine Cup | Microsoft
Du script PowerShell à l’interface web avec Poshboard 04/05/2012 | Scripting | PowerShell
SCCM 2012 : « Gérer 100 000 utilisateurs avec un seul serveur » 04/05/2012 | System Center 2012 | TechDays 2012
UseIT 2012 – Open Data, cloud computing et cybercriminalité au programme 04/05/2012 | Salon | Evènement
Hana, mobilité, cloud : Henri van der Vaeren dévoile la stratégie de SAP 04/05/2012 | SAP | Cloud Computing
Citrix Netscaler 10 : un ADC élastique 25/04/2012 | Citrix | Appliances
MMS 2012 - Windows Server 2012 sortira en fin d’année 20/04/2012 | Windows Server 2012 | Microsoft Management Summit
MMS 2012 – System Center 2012 est disponible 18/04/2012 | System Center 2012 | Microsoft Management Summit
Hitachi cible les marchés verticaux avec les solutions NAS de BlueArc 16/04/2012 | NAS | Stockage
À la une d'IT Pro Magazine : Server Core, Archivage, Big Data et Windows Intune 06/04/2012 | Cloud Computing | Big Data
Serena renforce son offre ITSM 05/04/2012 | Administrateur | Développement
Vidéos Informatiques
Travail Collaboratif Présentation du Dell XPS 13
Travail Collaboratif Premiers déploiements massifs de SharePoint Workspace en 2012
Cloud computing « Le cloud ne doit pas être une aire de non-droit »
Windows Server Du script PowerShell à l’interface web avec Poshboard
Liens Informatiques
Ressources iT Pro
1er Guide thématique dédié à la mise œuvre d’un Cloud PrivéIT Pro Magazine | 12 pages
Guide de protection des environnements Hyper-VITPro Magazine | 4 pages
Guide d’optimisation & synchronisation des données SharePointAvepoint | 18 pages
Booster les performances des plates-formes virtuelles ?Diskeeper | 12 pages
IT Pro Magazine Spécial Windows 8IT Pro Magazine | 60 pages
Le guide du stockage signé IT Pro MagazineIT Pro Magazine | 16 pages
Testez Acronis Backup & Recovery 11 Virtual EditionAcronis | 2 pages





















