Installation de WSUS en Powershell

Installation de WSUS

sur

Windows Server 2019

Peu le savent mais on peut faire l’installation de WSUS sans avoir besoin de passer par l’interface graphique, qui à mon goût est un peu limitée. En effet, on peut effectuer l’installation à l’aide de l’applet de commande Install-WindowsFeature et en spécifiant les noms de fonctionnalités appropriés que l’on souhaite installer. 

Dans le cas de WSUS, nous nous focalisons uniquement sur la fonctionnalité des services de mise à jour. 

On obtient les sous-fonctionnalités possibles et disponibles à l’aide de la cmdlet Get-WindowsFeature et en spécifiant UpdateServices * pour le paramètre Name .

Get-WindowsFeature –Name UpdateServices *

Vous pouvez essayer de tout installer, mais cela se terminera mal pour vous car il y aura un conflit entre l’utilisation de la base de données interne Windows (WID) et l’utilisation d’une autre base de données SQL Server (locale ou distante) pour stocker la base de données SUSDB.

Image du message d'erreur

On a le choix entre l’utilisation de WID ou l’utilisation de SQL Server. Chose à savoir mais c’est une solution non pérenne, SLQ Express server est utilisable avec WSUS. Néanmoins, l’utilisation de SQL Server Express est limité (taille mémoire, taille database, etc). Il vaut mieux éviter.

Moi. J’ai choisi WID. Le premier argument. Il n’y a pas d’argent. Le second, je ne veux pas de SQL Express. Et puis… C’est plus simple avec la base de données WID. Plus simple parce qu’il n’y a qu’une seule ligne de code pour tout installer. 

Juste pour voir ce qui peut être installé, on utilise le commutateur WhatIf .

Install-WindowsFeature -Nom UpdateServices -IncludeManagementTools –WhatIf

À première vue, cela installera WSUS, ainsi que la base de données WID et certains composants IIS qui sont utilisés pour les enregistrements client et d’autres choses. Ca me semble probant. Je supprime WhatIf et je relance la commande.

C’est un chouia long, il faut patienter un peu…

L’installation est terminée. On a un message indiquant qu’une configuration supplémentaire est nécessaire. Pour les habitués, c’est la fameuse postinstall que l’on a en mode graphique. Elle existe aussi en mode POSH.

A partit de la, on va utiliser wsusutil.exe que peu utilisent bien que ce soit un outil puissant. Il se trouve dans C:\Program Files\Update Services\Tools. Il y a les paramètres habituels que l’on utulise usuellement mais il y en a d’autres dédiés à la configuration PostinstallIl suffit juste d’utiliser l’ argument PostInstall .

.\wsusutil.exe postinstall /?

Bien sûr, il faut avoir les paramètres pour spécifier où stocker le contenu et où créer la base de données. 

Avant de spécifier l’endroit où je veux stocker le contenu, il faut créer le répertoire pour le stockage. Dans mon infra, nous avons un NetApp pour ce type d’utilisation. JE ne stocke rien dans le disque de l’OS. On crée le lecteur « D:\ ».

New-Item -Path D: -Nom WSUS -ItemType Répertoire

One exécute la commande suivante pour configurer le répertoire de stockage, pour télécharger et enregistrer tous les fichiers de mise à jour dans D:\WSUS.

.\wsusutil.exe postinstall CONTENT_DIR=D:\WSUS

Après tout ça, on a configuré le répertoire de stockage sur un autre lecteur sur lequel sera enregistrer les fichiers de mise à jour. 

Utilisation avec un serveur SQL alternatif

Si on veut utiliser un serveur SQL différent pour enregistrer les données au lieu de se fier à WID C’est une option utilisable avec WSUSUtil.exe PostInstall. 

Install-WindowsFeature -Nom UpdateServices-Services, UpdateServices-DB -IncludeManagementTools

Il faudra spécifier à WSUSUtil le répertoire Content, ainsi que la base de données SQL Server que l’on souhaite utiliser je souhaite utiliser pour mon serveur WSUS. Note. Le serveur WSUS doit se trouver sur un domaine pour que la génération de base de données SQL Server distante fonctionne. 

.\ wsusutil.exe postinstall SQL_INSTANCE_NAME="APCWINDB1\SQL2016" CONTENT_DIR=D:\WSUS

Et après quelques minutes, la configuration est terminée avec le répertoire Content sur « D:\WSUS » et la base de données SUSDB configurée sur mon serveur SQL distant.

Inspectez l’état d’installation de WSUS

En utilisant mon installation actuelle de WSUS et la base de données SQL Server distante, nous pouvons maintenant vérifier l’analyseur des meilleures pratiques pour voir si quelque chose d’autre est nécessaire avant de configurer le serveur WSUS et de lancer la synchronisation pour obtenir toutes les métadonnées de mise à jour.

Invoke-BpaModel -ModelId Microsoft/Windows/UpdateServices

Voyons maintenant les résultats de notre scan…

Get-BpaResult -ModelId Microsoft/Windows/UpdateServices | Select Title,Severity,Compliance | Format-List

Le serveur WSUS n’est pas configurer pour utiliser le module linguistique. Ca peut se régler plus tard. Il est presque conforme (la Base données est stockée au mauvais endroit)

On configure les langues et on indique au serveur où on veux faire la synchronisation. 

#Obtenir les objets WSUS Server
$wsus = Get-WSUSServer
#Connection à la configuration de WSUS server
$wsusConfig = $wsus.GetConfiguration()
#Régler le téléchargement des updates à partir de Microsoft Updates
Set-WsusServerSynchronization –SyncFromMU
#Régler la langue des mise à jours en français et sauvegarder la configuration
$wsusConfig.AllUpdateLanguagesEnabled = $false           
$wsusConfig.SetEnabledUpdateLanguages(“fr”)           
$wsusConfig.Save()
#Obtenir les enregistrement WSUS et démarrer la synchronisation initiale pour avoir les dernières catégories
$subscription = $wsus.GetSubscription()
$subscription.StartSynchronizationForCategoryOnly()
While ($subscription.GetSynchronizationStatus() -ne ‘NotProcessing’) {
    Write-Host “.” -NoNewline
    Start-Sleep -Seconds 5
}
Write-Host “Sync is done.”

L’exécution du script.

J’ai bossé sur un script pour WSUS se synchronise automatiquement une fois par jour à minuit et lancer une autre synchronisation pour extraire les métadonnées de mise à jour mais je n’ai pas eu le temps de le finir. Si l’envie vous en prends.

Get-WsusProduct | where-Object {
    $_.Product.Title -in (
    'CAPICOM',
    'Silverlight',
    'SQL Server 2016',
    'SQL Server 2012',
    'SQL Server 2019',
    'Exchange Server 2010',
    'Windows Server 2012r2',
    'Windows Server 2016',
    'Windows Server 2019',
    'Windows 10')
} | Set-WsusProduct
#Configurer les classifications
Get-WsusClassification | Where-Object {
    $_.Classification.Title -in (
    'Mettre à jour les correctifs',
    'Mises à jour de sécurité',
    'Mises à jour critiques',
    ‘Service Packs’,
    'Mises à jour')
} | Set-WsusClassification
#Configurer les synchronisations
$subscription.SynchronizeAutomatically = $true
#Régler la synchronisation prévue à minuit chaque nuit
$subscription.SynchronizeAutomaticallyTimeOfDay = (New-TimeSpan -Hours 0)
$subscription.NumberOfSynchronizationsPerDay = 1
$subscription.Save()
#Lancer une synchronisation
$subscription.StartSynchronization()

La synchronisation peut prendre un certain temps. Une fois l’opération terminée, vous pouvez commencer à examiner les mises à jour disponibles

Un grand merci au forum des scripteurs en POSH

Postez vos questions sur le forum officiel des scripteurs . 

Cet article, publié dans Active Directory, AD DS, déploiement, Deploiement, Deployment, Powershel, PowerShell, sécurité, scripts, Server 2016, Server 2019, SQL Server, telemetry, Tips, Windows 10, Windows Server, wsus, est tagué , , , , , , , , , , , , , . Ajoutez ce permalien à vos favoris.

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s