Windows PowerShell : Rapports HTML dans PowerShell

En réalité, vous pouvez utiliser les cmdlets de Microsoft Windows PowerShell pour générer des rapports HTML que vous pouvez partager avec vos collègues.

Don Jones

Parmi ses nombreuses compétences, Windows PowerShell a la capacité intégrée pour produire une sortie HTML à partir de ses diverses applets de commande. Simplement canaliser la sortie de la cmdlet ConvertTo-HTML et cette sortie de tuyau à Out-File pour l'obtenir dans un fichier. Par exemple :

Get-WmiObject –Class Win32_Service | 
Select-Object –property Name,State |
Where-Object –Filter { $_.StartMode –eq 'Auto' –and $_.State –ne 'Running' } | 
ConvertTo-HTML | 
Out-File BadNews.html

Cela vous donnera une liste des services qui doivent être en cours d'exécution, mais qui ne sont pas. C'est quelque chose, vous pouvez écrire à un serveur de fichiers intranet et demandez à votre support technique de vérifier chaque matin. Par ailleurs, lorsque vous tapez tout cela, les quatre premières lignes doivent se terminer par le caractère (|). La dernière ligne se termine par un retour chariot.

Si vous tapez interactive que dans le shell, vous remarquerez que l'invite de modification pour « >> » après avoir tapé la première ligne tuyau et retour chariot. C'est OK. Cela signifie que Windows PowerShell attend que vous pouvez taper la ligne suivante. Après avoir tapé la quatrième et dernière ligne, appuyez sur ENTRÉE deux fois pour indiquer à l'interpréteur de commandes que vous avez terminé et que vous voulez exécuter la commande.

Un problème avec l'applet de commande ConvertTo-HTML, cependant, est qu'il a conçu uniquement pour traiter un seul type de sortie à la fois. Si vous essayez de saut de nombreux types d'objets — services, les processus ou les entrées du journal des événements — il ne sont pas correctement formater la sortie.

Si vous souhaitez créer un rapport de synthèse d'un certain type, l'astuce consiste à utiliser les différents paramètres de l'applet de commande. Par exemple, supposons que vous voulez générer un rapport qui inclut les mentionnées précédemment « services qui doivent être en cours d'exécution, mais qui ne sont pas ». Vous souhaitez également que la page liste 100 entrées de journal des événements de sécurité la plus récentes, tous les processus que du serveur est en cours d'exécution et certaines informations élémentaires sur le serveur lui-même.

Vous devez connaître deux choses : Premièrement, le paramètre –Fragment de ConvertTo-HTML (que vous trouverez dans son fichier d'aide) et la seconde, le fait que l'applet de commande n'écrire HTML dans un fichier.

Comme dans mon premier exemple, l'applet de commande place le code HTML dans le pipeline — qu'il faut une étape distincte pour l'obtenir dans un fichier. Qui semble lourde dans le premier exemple, mais nous donnera la possibilité de que nous avons besoin pour ce faire :

$one = Get-WmiObject -class Win32_Service |
 Select-Object -property Name,State |
 Where-Object -filter { $_.Mode -eq 'Auto' -and $_.State -ne 'Running' } |
ConvertTo-HTML -Fragment 

$two = Get-EventLog -LogName Security -newest 100 |
ConvertTo-HTML -Fragment 

$three = Get-Process |
ConvertTo-HTML -Fragment 

$four = Get-WmiObject -class Win32_OperatingSystem |
 Select-Object -property Caption,BuildNumber,ServicePackMajorVersion,
 @{n='LastBootTime';e={$_.ConvertToDateTime($_.LastBootUpTime)}} |
ConvertTo-HTML -Fragment 

ConvertTo-HTML -Body "$one $two $three $four" -Title "Server Status" |
 Out-File c:\status.html

Lorsque vous tapez dans, terminer chaque ligne avec un caractère sauf la dernière ligne, juste se termine par un retour chariot. Cette option exécute quatre commandes distinctes, chacune d'entre elles récupère une partie des informations et de la conversion dans un fragment HTML.

Un fragment HTML est une longue chaîne de code HTML qui n'inclut pas les balises d'en-tête qui rendent une page complète. Dans la dernière étape, je suis simplement brouillage le code HTML dans le corps d'une page complète et de les sortir dans un fichier.

Essayez d'exécuter qui et voir ce que vous pensez. Il est assez simple. Il s'agit d'un canular que Windows PowerShell est le seul produit Microsoft qui est dirigé par « nettoyer » HTML, sans ajout de n'importe quel style ou de mise en forme. L'inconvénient est que HTML « propre » est relativement ennuyeux. C'est intentionnelle. Vous êtes censé pour rendre plus attrayants à l'aide d'un fichier CSS distinct.

Dans le code HTML, vous allez appliquer principalement dans la mise en forme HTML <td> balises. Ceux-ci contiennent les lignes du tableau. La <th> balises contiennent des en-têtes de colonne de la table. La <body> balise peut fournir un format par défaut pour la page entière. Créez un fichier texte nommé C:\Style.css et entrez les informations suivantes :

body {
font-family:Calibri;
 font-size:10pt;
}
th { 
background-color:black;
color:white;
}
td {
 background-color:#666;
color:black;
}
Now, I’ll simply modify my lastConvertTo-HTML command as follows:
ConvertTo-HTML -Body "$one $two $three $four" -Title "Server Status" -CssUri c:\style.css |
 Out-File c:\status.html

Qui doit avoir deux lignes de texte pour taper, et encore une fois, la première ligne se termine au caractère de tuyau. Réessayez d'exécuter tout cela. Vous trouverez que plus parfaitement mises en forme de sortie. Malheureusement, CSS ne fournit pas un moyen d'appliquer le style aux lignes de la table de remplacement, au moins pas de la manière que Windows PowerShell génère le code HTML de sortie.

Vous pouvez utiliser les paramètres –PreContent et –PostContent de ConvertTo-HTML pour ajouter des en-têtes de section et tout autre texte. Cela peut aider à améliorer la lisibilité du rapport. N'importe quelle chaîne passée à –PreContent avant la table s'affiche. Texte envoyé à –PostContent s'affiche après le tableau. Vous trouverez des exemples de ces en exécutant ConvertTo-HTML Help
–example dans le shell.

Il s'agit d'un bon exemple de la façon dont vous pouvez utiliser Windows PowerShell pour produire des rapports utiles à partager avec vos collègues. Il ne prend pas beaucoup de travail supplémentaire pour créer une sortie HTML décent attrayants. En enregistrant les pages à un serveur de fichiers intranet, vous les rendez accessibles à vos collègues, les responsables et toute autre personne qui peuvent en avoir besoin.

Don Jones

Don Jones est un destinataire de la récompense MVP de Microsoft et auteur d'au "Découvrez Windows PowerShell dans un mois de déjeuner » (Manning Publications Co., 2010), un livre conçu pour aider à n'importe quel administrateur devenir efficace avec Windows PowerShell. Jones propose également des formations de Windows PowerShell publics et sur site. Vous pouvez le contacter sur son site Web à ConcentratedTech.com.

Contenu associé