Question Script pour recherches de KB sur les AD ou tout autre serveur....

Plus d'informations
il y a 9 mois 3 semaines #34650 par Bruce
Bonjour, 

Un petit scipt pour vérifier si les KB sont installées sur vos AD, a adapter si vous voulez sur d'autres serveurs, remplir le tableau avec les numeros de KB a rechercher ou adapter si vous voulez importer un CSV avec les KB par exemple.
Import-Module ActiveDirectory 
#Efface la console
Clear-Host

# Version de serveur Windows
$ServerVersion = "Windows Server 2019 Standard"

# Site pour recherche de correctif M$ des vulnérabilités: https://msrc.microsoft.com/update-guide/vulnerability
# Listes de correctifs pour Windows Server 2019 ou import depuis un CSV
# KB5048661 - CVE-2024-49112 et CVE-2024-49113 - LDAP NightMare
# KB5050008 - CVE-2025-21293 - Active Directory : un code d’exploitation a été publié pour la faille de sécurité
# https://catalog.update.microsoft.com/v7/site/Search.aspx?q=KB5050008
# https://catalog.update.microsoft.com/Search.aspx?q=KB5050008

# Entrez vos listes de KB a checker dans le tableau
$Correctif = @(
    [pscustomobject]@{KB='KB5048661';CVE='CVE-2024-49112';Description='LDAP NightMare'}
    [pscustomobject]@{KB='KB5050008';CVE='CVE-2025-21293';Description="Active Directory : un code d’exploitation a été publié pour la faille de sécurité"}
)

# Get your ad domain name
$DomainName = (Get-ADDomain).DNSRoot
 
# Get all Domain Controllers
$DCs = Get-ADDomainController -Filter * -Server $DomainName | Select-Object Hostname,Ipv4address,OperatingSystem
# Pour controller sur les serveur et obtenir la liste des serveurs
# $Servers = Get-ADComputer -Filter {operatingsystem -like '*server*' -and Enabled -eq $true} -Properties Name,Operatingsystem,OperatingSystemVersion,IPv4Address

Write-Host "************************************************************"
Write-Host "***                                                      ***"
Write-Host "*** Recherche de correctifs de sécurité sur les serveurs ***"
Write-Host "***                                                      ***"
Write-Host "************************************************************`n"

ForEach($DC in $DCs)
{          
     $ping = Test-Connection $DC.IPv4Address -Count 1 -Quiet 

    if ($ping -eq $true -and $DC.OperatingSystem -like $ServerVersion)
    {
        Write-Host "- Controleur de domaine: $($DC.Hostname)"
        foreach ($KB in $Correctif)
        {
            try
            {
               $Install = Get-HotFix -Id $KB.KB -ComputerName $DC.Hostname -ErrorAction SilentlyContinue
               Write-Host -ForegroundColor Green "`t$($KB.CVE) `t$($Install.HotFixID) `t$($Install.InstalledOn) `t$($Install.InstalledBy) `t$($KB.Description)"
            }
            catch
            {
                Write-Host -ForegroundColor Red "`tLe correctif logiciel demandé $($KB.KB) est introuvable sur l’ordinateur $($DC.Hostname)"
                $InstallDate = "non installé"
            }
        }
    }else
    {
        Write-Host -ForegroundColor Red "$($DC.Hostname) ne repond pas"
    }
}

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

Plus d'informations
il y a 9 mois 2 semaines #34657 par Arnaud Petitjean
Merci Bruce pour ta contribution !

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

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

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