Question Export html avec couleur :)

Plus d'informations
il y a 3 semaines 1 jour - il y a 3 semaines 1 jour #34000 par Fabien
Réponse de Fabien sur le sujet Export html avec couleur :)
Bonjour Azalee,

J'ai apporté des modifications pour afficher en vert entre +30 à +60 jours; Magenta entre 1 à 30 jours; Rouge le même jour ou inférieur; Tout le reste ne pas afficher.


#Modèle HTML du corps du mail
$HTML = @"
<body style="background-color: #181a1b; color: #FFFFFF;">
<h1 style="font-size: large;"> Dates de péremption des certificats Azure du VarReportDate</h1>

VarKeyID

VarCertificateID

</body>
"@


####### KeyID

#Connexion Azure
Connect-AzureAD
#Récupération des applications Azure
$AADAppsColl = Get-AzureADApplication -All:$true
#Traitement pour chaque application
foreach($AADApps in $AADAppsColl) {
$AppID = $AADApps.AppID
$AADApp = Get-AzureADApplication -Filter "AppID eq '$AppID'"

$PassCreds = $AADApp.PasswordCredentials
if ($null -ne $PassCreds) {
foreach($PassCred in $PassCreds) {

    # Récupérer la date du jour
    $dateDuJour = Get-Date

    # Calculer la différence en jours entre la date d'exipration et la date du jour
    $diffEnJours = ($PassCred.EndDate - $dateDuJour).TotalDays
    #Arrondir le résultat
    $diffEnJours = [Math]::Round($diffEnJours)

    # Appliquer la mise en forme conditionnelle
    #Expiration entre 30 à 60 jours --> Vert
    if ($diffEnJours -gt 30 -and $diffEnJours -le 60) {
        #Couleur Verte   
        $color="#4CFF00"
    }
    #Expiration entre 1 à 30 jours --> Magenta
    elseif ($diffEnJours -ge 1 -and $diffEnJours -le 30) {
        #Couleur Magenta
        $color = "#CC26FF"
    }
    #Expiration le jour même ou inférieur --> Rouge
    elseif ($diffEnJours -lt 1) {
        #Couleur Rouge
        $color = "#FF0000"
    }
    #Sinon rien
    else{}


        #Incrémentation du tableau KeyID
           $KeyID +=   @"

<table style="border-collapse: collapse; border: 1px solid #FFFFFF;" cellpadding="5">
   <td bgcolor="#0054BC" style="border-collapse: collapse; border: 1px solid #FFFFFF;">Azure Application Name</td>
   <td style="border-collapse: collapse; border: 1px solid #FFFFFF;">$($AADApp.DisplayName)</td>
  <tr>
   <td bgcolor="#0054BC" style="border-collapse: collapse; border: 1px solid #FFFFFF;">KeyID</td>
   <td style="border-collapse: collapse; border: 1px solid #FFFFFF;">$($PassCred.KeyID)</td>
  <tr>
   <td bgcolor="#0054BC" style="border-collapse: collapse; border: 1px solid #FFFFFF;">Expire</td>
   <td style="border-collapse: collapse; border: 1px solid #FFFFFF; color: $color">$($PassCred.EndDate)</td>
  <tr>
</table>

<br>

"@
}
}


####### CertificateID

$KeyCreds = $AADApp.KeyCredentials
if ($null -ne $KeyCreds) {
foreach($KeyCred in $KeyCreds) {

    # Récupérer la date du jour
    $dateDuJour = Get-Date

    # Calculer la différence en jours entre la date d'exipration et la date du jour
    $diffEnJours = ($KeyCred.EndDate - $dateDuJour).Days
    #Arrondir le résultat
    $diffEnJours = [Math]::Round($diffEnJours)

    # Appliquer la mise en forme conditionnelle
    #Expiration entre 30 à 60 jours --> Vert
    if ($diffEnJours -gt 30 -and $diffEnJours -le 60) {
        #Couleur Verte   
        $color="#4CFF00"
    }
    #Expiration entre 1 à 30 jours --> Magenta
    elseif ($diffEnJours -ge 1 -and $diffEnJours -le 30) {
        #Couleur Magenta
        $color = "#CC26FF"
    }
    #Expiration le jour même ou inférieur --> Rouge
    elseif ($diffEnJours -lt 1) {
        #Couleur Rouge
        $color = "#FF0000"
    }
    #Sinon rien
    else{}


        #Incrémentation du tableau CertificateID
           $CertificateID +=   @"

<table style="border-collapse: collapse; border: 1px solid #FFFFFF;" cellpadding="5">
   <td bgcolor="#0054BC" style="border-collapse: collapse; border: 1px solid #FFFFFF;">Azure Application Name</td>
   <td style="border-collapse: collapse; border: 1px solid #FFFFFF;">$($AADApp.DisplayName)</td>
  <tr>
   <td bgcolor="#0054BC" style="border-collapse: collapse; border: 1px solid #FFFFFF;">Certificate ID</td>
   <td style="border-collapse: collapse; border: 1px solid #FFFFFF;">$($KeyCred.KeyID)</td>
  <tr>
   <td bgcolor="#0054BC" style="border-collapse: collapse; border: 1px solid #FFFFFF;">Expire</td>
   <td style="border-collapse: collapse; border: 1px solid #FFFFFF; color: $color">$($KeyCred.EndDate)</td>
  <tr>
</table>

<br>

"@
}
}
}
    
#Récupération de la date du jour
$ReportDate = Get-Date -Format "dd/MM/yyyy"

#Remplace les variables suivantes dans le modèle HTML : VarReportDate, VarTableau
$HTML= $HTML.Replace("VarReportDate",$ReportDate)
$HTML= $HTML.Replace("VarKeyID",$KeyID)
$HTML= $HTML.Replace("VarCertificateID",$CertificateID)

#Generate file html (Optional)
Add-Type -AssemblyName System.Web
[System.Web.HttpUtility]::HtmlDecode($html) | Out-File "C:\Temp\Result.html"
 
Dernière édition: il y a 3 semaines 1 jour par Fabien.
Les utilisateur(s) suivant ont remercié: azalee

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 semaines 1 jour #34002 par Fabien
Réponse de Fabien sur le sujet Export html avec couleur :)
Pense à te présenter dans la section Présentation stp 

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 semaines 1 jour #34004 par azalee
Réponse de azalee sur le sujet Export html avec couleur :)
C'est fait ;)
Les utilisateur(s) suivant ont remercié: Fabien

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 semaines 1 jour #34005 par azalee
Réponse de azalee sur le sujet Export html avec couleur :)
Bonjour Fabien D., 

merci encore, je viens de tester le nouveau code, mais le résultat ne semble plus correspondre.

Dans l'export, j'ai toujours tous les résultats et les code couleurs n'ont plus l'air de fonctionner (voir PJ)

J'ai l'impression que dans l'export html, il ne tient pas compte du foreach pour ne garder que les résultats souhaité (en vert entre +30 à +60 jours; Magenta entre 1 à 30 jours; Rouge le même jour ou inférieur ; Tout le reste ne pas afficher) car il affiche quand même tout le reste.

j'ai testé le code sur 3 vm différentes, MAJ le module AzureAD, reboot pour purger le cache powershell......et aussi Clear Variables without restarting ==> Remove-Variable * -ErrorAction SilentlyContinue; Remove-Module *; $error.Clear();

Si plus simple de classer l'export html par date d'expiration, cela me conviendrait également :)

Merci d'avance

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 semaines 1 jour #34006 par Fabien
Réponse de Fabien sur le sujet Export html avec couleur :)
Azalee,

Voici un petit retour arrière du script :
#Modèle HTML du corps du mail
$HTML = @"
<body style="background-color: #181a1b; color: #FFFFFF;">
<h1 style="font-size: large;"> Dates de péremption des certificats Azure du VarReportDate</h1>

VarKeyID

VarCertificateID

</body>
"@


####### KeyID

#Connexion Azure
Connect-AzureAD
#Récupération des applications Azure
$AADAppsColl = Get-AzureADApplication -All:$true
#Traitement pour chaque application
foreach($AADApps in $AADAppsColl) {
$AppID = $AADApps.AppID
$AADApp = Get-AzureADApplication -Filter "AppID eq '$AppID'"

$PassCreds = $AADApp.PasswordCredentials
if ($null -ne $PassCreds) {
foreach($PassCred in $PassCreds) {

    # Récupérer la date du jour
    $dateDuJour = Get-Date

    # Calculer la différence en jours entre la date d'exipration et la date du jour
    $diffEnJours = ($PassCred.EndDate - $dateDuJour).Days

    # Appliquer la mise en forme conditionnelle
    #Expiration entre 30 à 60 jours --> Vert
    if ($diffEnJours -gt 30 -and $diffEnJours -le 60) {
        #Couleur Verte   
        $color="#4CFF00"
    }
    #Expiration entre 1 à 30 jours --> Magenta
    elseif ($diffEnJours -ge 1 -and $diffEnJours -le 30) {
        #Couleur Magenta
        $color = "#CC26FF"
    }
    #Expiration le jour même ou inférieur --> Rouge
    elseif ($diffEnJours -lt 1) {
        #Couleur Rouge
        $color = "#FF0000"
    }
    #Sinon rien
    else{}


        #Incrémentation du tableau KeyID
           $KeyID +=   @"

<table style="border-collapse: collapse; border: 1px solid #FFFFFF;" cellpadding="5">
   <td bgcolor="#0054BC" style="border-collapse: collapse; border: 1px solid #FFFFFF;">Azure Application Name</td>
   <td style="border-collapse: collapse; border: 1px solid #FFFFFF;">$($AADApp.DisplayName)</td>
  <tr>
   <td bgcolor="#0054BC" style="border-collapse: collapse; border: 1px solid #FFFFFF;">KeyID</td>
   <td style="border-collapse: collapse; border: 1px solid #FFFFFF;">$($PassCred.KeyID)</td>
  <tr>
   <td bgcolor="#0054BC" style="border-collapse: collapse; border: 1px solid #FFFFFF;">Expire</td>
   <td style="border-collapse: collapse; border: 1px solid #FFFFFF; color: $color">$($PassCred.EndDate)</td>
  <tr>
</table>

<br>

"@
}
}


####### CertificateID

$KeyCreds = $AADApp.KeyCredentials
if ($null -ne $KeyCreds) {
foreach($KeyCred in $KeyCreds) {

    # Récupérer la date du jour
    $dateDuJour = Get-Date

    # Calculer la différence en jours entre la date d'exipration et la date du jour
    $diffEnJours = ($KeyCred.EndDate - $dateDuJour).Days

    # Appliquer la mise en forme conditionnelle
    #Expiration entre 30 à 60 jours --> Vert
    if ($diffEnJours -gt 30 -and $diffEnJours -le 60) {
        #Couleur Verte   
        $color="#4CFF00"
    }
    #Expiration entre 1 à 30 jours --> Magenta
    elseif ($diffEnJours -ge 1 -and $diffEnJours -le 30) {
        #Couleur Magenta
        $color = "#CC26FF"
    }
    #Expiration le jour même ou inférieur --> Rouge
    elseif ($diffEnJours -lt 1) {
        #Couleur Rouge
        $color = "#FF0000"
    }
    #Sinon rien
    else{}


        #Incrémentation du tableau CertificateID
           $CertificateID +=   @"

<table style="border-collapse: collapse; border: 1px solid #FFFFFF;" cellpadding="5">
   <td bgcolor="#0054BC" style="border-collapse: collapse; border: 1px solid #FFFFFF;">Azure Application Name</td>
   <td style="border-collapse: collapse; border: 1px solid #FFFFFF;">$($AADApp.DisplayName)</td>
  <tr>
   <td bgcolor="#0054BC" style="border-collapse: collapse; border: 1px solid #FFFFFF;">Certificate ID</td>
   <td style="border-collapse: collapse; border: 1px solid #FFFFFF;">$($KeyCred.KeyID)</td>
  <tr>
   <td bgcolor="#0054BC" style="border-collapse: collapse; border: 1px solid #FFFFFF;">Expire</td>
   <td style="border-collapse: collapse; border: 1px solid #FFFFFF; color: $color">$($KeyCred.EndDate)</td>
  <tr>
</table>

<br>

"@
}
}
}
    
#Récupération de la date du jour
$ReportDate = Get-Date -Format "dd/MM/yyyy"

#Remplace les variables suivantes dans le modèle HTML : VarReportDate, VarTableau
$HTML= $HTML.Replace("VarReportDate",$ReportDate)
$HTML= $HTML.Replace("VarKeyID",$KeyID)
$HTML= $HTML.Replace("VarCertificateID",$CertificateID)

#Generate file html (Optional)
Add-Type -AssemblyName System.Web
[System.Web.HttpUtility]::HtmlDecode($html) | Out-File "C:\Temp\Result.html"

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 semaines 1 jour #34007 par Fabien
Réponse de Fabien sur le sujet Export html avec couleur :)
Si tu veux trier les résultats, cela risque d'être compliqué.
Le tri pourra être fait sur les tableaux "KeyID" et ensuite sur les tableaux "CertificateID".
Ce qui va t'afficher sur ta page Web, tous les tableaux "KeyID" et à la suite tous les tableaux "CertificateID".

Le problème majeur qui va se poser est le lien entre le nom de l'application et le KeyID car ce sont deux variables différentes.
Les utilisateur(s) suivant ont remercié: azalee

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.111 secondes
Propulsé par Kunena