none
Mise en place script HTML powershell RRS feed

  • Question

  • Bonjour,

    Je voudrais avoir votre avis pour la fabrication d'un script powershell qui sortirait un rapport HTML ensuite.

    Je vous montre un court extrait de ce que j'ai fais, et je suis tout ouvert pour les commentaires.

    #Requires -Modules DhcpServer
    # =======================================================
    
    
    $htmlReportPath = "c:\DNSReport.html"
    
    function Get-DHCPServersSettings
    {
        $allDHCP = Get-DhcpServerInDC
        $allDHCP | Foreach-Object {
            [PSCustomObject]@{
                Name = $_.DnsName
                DBPath =  (Get-DhcpServerDatabase -ComputerName $_.Dnsname).FileName
                BackupPath = (Get-DhcpServerDatabase -ComputerName $_.Dnsname).BackupPath
                Logging = (Get-DhcpServerDatabase -ComputerName $_.Dnsname).LoggingEnabled
                AuditState = (Get-DhcpServerAuditLog -ComputerName $_.Dnsname).Enable
                AuditPath = (Get-DhcpServerAuditLog -ComputerName $_.Dnsname).path
            }
        }
    }
    
    
    $DHCPServersSettings = Get-DHCPServersSettings
    
    
    #region HTML
    @"
    <!DOCTYPE html>
    <html>
    <head>
    <style>
    table {
       # border-collapse: collapse;
       border-width: 1px; border-style: solid; border-color: black; border-collapse: collapse;
    }
    h2 {text-align:center}
    th, td {
        #padding: 8px;
        #text-align: left;
        #border-bottom: 1px solid #ddd;
        border-width: 1px; padding: 3px; border-style: solid; border-color: black;
    }
    body {
        font-family:"Vinci Sans Light";Font-Size:10pt 
    }
    
    tr:hover{background-color:#f5f5f5}
    </style>
    </head>
    <body>
    <h1>DHCP Report</h1>
    
    <h3>DHCP Servers Settings</h3>
    $($DHCPServersSettings | ConvertTo-Html -Fragment)
    
    
    
    </body>
    "@ | Out-File -Encoding utf8 $htmlReportPath
    #endregion
    
    Invoke-Item $htmlReportPath
    
    


    Voici les questions que je me pose principalement :

    -Est ce que ce ne serait pas plus simple de simplement faire "ma commande | select + les champs que je veux" plutôt qu'avoir une fonction à chaque fois qui reprend principalement le résultat d'une seule commande qui existe déjà.

    -Est ce que la fabrication du fichier vous parrait correcte pour pouvoir être maintenue ?

    -Je n'ai pas encore commenté mais c'est prévu.


    Merci de marquer comme reponses les interventions qui vous ont ete utile.



    mardi 13 avril 2021 19:06

Toutes les réponses

  • Bonjour matteu31400,

    Je pense qu'un script de reporting doit être construit ainsi :

    • Une ou des queries, dont on passe le résultat en variable
    • et seulement ensuite on se préoccupe de l'export dans le format qu'on veut
    • Après, il faut gérer les erreurs
    • et on termine par Synopsis, examples, ... bref l'aide interne, sans oublier les commentaires au cours du code.

    Il s'avère que j'ai fait un script DHCP report. Il en fait beaucoup plus que le tien dans ce qu'il  ramasse, mais ça c'est selon les besoins. J'ai également choisi un export en html, mais je m'appuie sur le très excellent PSWriteHTML module. C'est juste une tuerie pour faire des reports au format html (tout comme ImportExcel pour les .xlsx).

    Je viens de pousser à l'instant le script et la sortie dans mon github. Jettes juste un oeil sur la sortie html, et puis, si ça te convient, accapares-toi le script, et adaptes le à tes besoins.

    C'est joli (enfin les goûts et les couleurs ...), il y a de la mise en forme conditionnelle répondant à mon besoin, je peux exporter dans d'autres formats facilement depuis le html, je peux déplacer des colonnes dans les tableaux (html dynamique), et j'aurais même pu ajouter de jolis graphiques si j'en avais la nécessité.

    cordialement

    Olivier

    mercredi 14 avril 2021 04:27
  • Bonjour,

    Merci pour ce retour.

    Pour les points évoqués, j'ai plutôt l'impression que mon script respecte le principe de collecte d'informations dans un premier temps puis d'affichage ensuite.

    J'ai mis uniquement un export du script que j'ai fais ici parce qu'en réalité j'ai utilisé beaucoup plus de commandlet du module dhcpserver. En fait, le script qui est sur ton github et celui que j'ai réalisé sont assez similaires à la différence que l'affichage du tien est bien plus agréable et en effet, le module pswriteHTML semble être TRES intéressant. Je vais me pencher dessus et je pense que je vais apporter des modifications à mes précédents script qui font un rapport HTML également pour l'intégrer car j'aime beaucoup le fait de pouvoir facilement faire de la mise en forme conditionnelle.


    Merci de marquer comme reponses les interventions qui vous ont ete utile.

    mercredi 14 avril 2021 07:24
  • Petit retour :

    J'ai fais un message sur leur git parce que je ne trouve pas les paramètre pour pouvoir avoir le titre des colonnes alignée à gauche et non pas au centre. 

    J'ai également demandé si c'était possible de ne pas utiliser toute la largeur de la page lorsque ce n'est pas nécessaire.

    J'ai lancé ton script dans mon lab, c'est très sensiblement identique à ce que je fais en effet.

    PS : Attention, tu met en rouge la cellule si la valeur de résolution de conflit est a 0 alors que ce n'est plus vraiment une valeur sur laquelle il faut s'attarder aujourd'hui : DHCP Best Practices: Dynamic Host Configuration Protocol (DHCP) | Microsoft Docs


    Merci de marquer comme reponses les interventions qui vous ont ete utile.

    mercredi 14 avril 2021 14:20
  • Bonsoir Matteu31400

    J'ai relu cet article. En effet, dans la plupart des cas, ce n'est pas nécessaire de configurer la Tentative de détection et de laisser le défaut (0). Cependant j'ai bâti ce script pour un contexte très "old scool" (oui, il y a encore des XP qui trainent).

    Je vois que tu as compris comment ça marche, ajuste à ton besoin.

    Olivier

    mercredi 14 avril 2021 17:27
  • J'ai eu mes réponses pour le module.

    La personne a d'ailleurs été très réactive.

    Je vais tenter de finir tout ça demain et je posterai ici.


    Merci de marquer comme reponses les interventions qui vous ont ete utile.

    mercredi 14 avril 2021 18:10