> Tech > Dossier Windows : Interfaces Graphiques en Powershell (3/3)

Dossier Windows : Interfaces Graphiques en Powershell (3/3)

Tech - Par Arnaud Petitjean - Publié le 10 novembre 2010
email

Le mois dernier, nous avons vu comment créer sans effort des interfaces graphiques de saisie s’appuyant sur la technologie Windows Forms grâce à l’outil Primal Forms.

Nous avons vu également comment au prix d’un peu plus d’efforts faire la même chose avec WPF/XAML et Visual Studio 2008 Express. Ce qu’il est important de retenir c’est que l’effort supplémentaire consenti pour utiliser la technologie WPF sera largement compensé le jour où la nécessité de modifier l’interface se fera sentir. En effet, avec WPF les interfaces graphiques peuvent être décrites à l’aide du langage XAML et stockées dans un fichier à part ; ce qui permet une séparation nette entre la partie graphique et la partie métier (le script lui-même), ce qui est impossible avec les Windows Forms.
 

Dossier Windows : Interfaces Graphiques en Powershell (3/3)

Dans ce dernier article de la série consacrée aux interfaces graphiques, nous allons laisser de côté la réalisation de formulaires graphiques pour nous focaliser davantage sur la présentation de données. Et dans ce domaine, encore assez peu exploré pour l’instant, les possibilités qui s’offrent à nous sont nombreuses ; nous allons en découvrir certaines d’entre elles…

MS Charts Controls est une bibliothèque d’objets graphiques (à télécharger) conçue pour les technologies Windows Forms et ASP.NET. Ces contrôles sont très agréables à l’oeil et donnent vraiment envie de les utiliser pour présenter des résultats. Voir figure 1.

Voici un exemple qui affiche sous forme de barregraphe 3D les cinq processus les plus consommateurs de mémoire. On trouve sur l’axe vertical les valeurs données en Mo.

En remplaçant simplement les lignes suivantes :

$Chart.Series[‘Data’].ChartType =
[System.Windows.Forms.DataVisualization.Charting.SeriesChartType]::
Column
$Chart.Series[‘Data’][‘DrawingStyle’] = ‘Cylinder’

Par celles-ci :

$Chart.Series[‘Data’].ChartType =
[System.Windows.Forms.DataVisualization.Charting.SeriesChartType]::pie
$Chart.Series[‘Data’][‘PieLabelStyle’] =
‘inside’
$Chart.Series[‘Data’][‘PieDrawingStyle’] =
‘concave’

Nous obtenons un joli camembert, pas mal n’est-ce pas ?!

Bibliothèque LibraryChart

La bibliothèque LibraryChart, créée par Chad Miller, que l’on peut trouver à cette adresse : http://poshcode. org/1330 a pour objectif de simplifier l’utilisation des MS Charts Controls.
LibraryChart propose les fonctionnalités suivantes :
• Envoi du résultat d’une ou plusieurs commande(s) PowerShell via le pipeline directement dans un graphique,
• Affichage des graphiques dans une Windows Form,
• Sauvegarde des graphiques en tant qu’image,
• Choix varié de graphiques : barres horizontales, colonnes, camembert, etc.
• Mise à jour des graphiques en temps réel grâce à l’utilisation de blocs de scripts ; ces derniers s’exécutant à un intervalle de temps donné,
• Compatibilité PowerShell v1 Prérequis
• Framework .Net 3.5 SP1
• Microsoft Charts Controls for Microsoft .NET Framework 3.5

Une fois la librairie téléchargée, il suffit de la charger comme ceci:

PS >. ./libraryChart.ps1

N’oubliez pas de bien mettre un point suivi d’un espace avant l’appel du script sinon la librairie ne sera pas importée dans la session de script (l’étendue) courante. Par conséquent les fonctions de la librairie ne seront pas chargées en mémoire. Une fois ceci fait, nous pouvons commencer à créer des graphiques très simplement.

Exemple : Affichage en mode colonnes des 10 processus occupant le plus de mémoire paginée

PS > Get-Process | Sort-Object -Property
PM | Select-Object -Last 10 | Out-Chart -x Name -y PM

Exemple : Affichage en mode camembert des 10 processus occupant le plus de mémoire paginée

PS > Get-Process | Sort-Object -Property PM | Select-Object -Last 10
| Out-Chart -x Name -y PM -chartType pie

Avouez que le rendement lignes de script/résultat obtenu est plus que rentable… Si les effets 3D vous manquent ou d’autres fonctionnalités, dans ce cas il vous suffira de modifier le script PowerShell correspondant à la librairie.

Téléchargez cette ressource

Cybersécurité des collectivités : Enjeux, Perspectives & Solutions

Cybersécurité des collectivités : Enjeux, Perspectives & Solutions

Villes, intercommunalités, métropoles, départements et régions sont particulièrement exposés aux risques de cybersécurité. Ce livre blanc Stormshield présente les défis cyber que rencontrent les collectivités, les solutions et perspectives pour qu’elles puissent assurer leur mission d’utilité publique, en toute sécurité.

Tech - Par Arnaud Petitjean - Publié le 10 novembre 2010