Mise en place d’un script Powershell permettant le nettoyage des mises à jour

Mise en place d’un script Powershell permettant le nettoyage des mises à jour

5 juillet 2018 Non Par admin

I. Prérequis

 

Afin de pouvoir mettre en place cette solution qui permettra à WSUS de faire de la place sur le disque dur de façon automatique, il y a quelques prérequis :

 

  • Script Powershell permettant le lancement de l’utilitaire de nettoyage intégré à WSUS.
  • Création de la tâche planifiée permettant de lancer le script Powershell

 

II. Script Powershell

 

Créer un fichier nommé wsuscleanup.ps1 et y inclure le script suivant :

 

#Region VARIABLES

# WSUS Connection Parameters:

## Change settings below to your situation. ##

# From address for email notifications. You can name it to whatever you want.

[String]$emailFromAddress = « support@iap.fr »

# To address for email notifications. The recipient whom needs to receive emails upon the cleanup completion.

[String]$emailToAddress = « xxx@iap.fr »

# Subject of email notification

[String]$emailSubject = « WSUS Cleanup Results »

# Enter your FQDM for Exchange server

[String]$emailMailserver = « smtp.iap.fr »

# Cleanup Parameters:

## Set to $True or $False ##

# Decline updates that have not been approved for 30 days or more, are not currently needed by any clients, and are superseded by an approved update.

[Boolean]$supersededUpdates = $True

# Decline updates that aren’t approved and have been expired my Microsoft.

[Boolean]$expiredUpdates = $True

# Delete updates that are expired and have not been approved for 30 days or more.

[Boolean]$obsoleteUpdates = $True

# Delete older update revisions that have not been approved for 30 days or more.

[Boolean]$compressUpdates = $True

# Delete computers that have not contacted the server in 30 days or more.

[Boolean]$obsoleteComputers = $False

# Delete update files that aren’t needed by updates or downstream servers.

[Boolean]$unneededContentFiles = $True

#EndRegion VARIABLES

#Region SCRIPT

# Load .NET assembly

[void][reflection.assembly]::LoadWithPartialName(« Microsoft.UpdateServices.Administration »);

# Connect to WSUS Server

$wsusParent = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer();

# Log the date first

$DateNow = Get-Date

# Perform Cleanup

$Body += « $parentServer ($DateNow ) : » | Out-String

$CleanupManager = $wsusParent.GetCleanupManager();

$CleanupScope = New-Object Microsoft.UpdateServices.Administration.CleanupScope($supersededUpdates,$expiredUpdates,$obsoleteUpdates,$compressUpdates,$obsoleteComputers,$unneededContentFiles);

$Body += $CleanupManager.PerformCleanup($CleanupScope) | Out-String

# Mail the report…

$message = new-object Net.Mail.MailMessage

$mailer = new-object Net.Mail.SmtpClient($emailMailserver)

# From address for email notifications. You can name it to whatever you want.

$message.From = $EmailFromAddress

# To address for email notifications. The recipient whom needs to receive emails upon the cleanup completion.

$message.To.Add($emailToAddress)

$message.Subject = « Windows Update – Server Clean-Up Wizard »

$message.Body = ($Body)

$mailer.Send($message)

#EndRegion SCRIPT

 

III. Création de la tâche planifiée

 

Une fois le script crée, il faut maintenant mettre en place une tâche planifié afin de le permettre de s’exécuter de façon automatique.

 

Ouvrir le « Planificateur de tâches » via les outils d’administration.

 

 

 

Une fois dans le planificateur de tâches, cliquer sur « Bibliothèque du Planificateur de tâches » afin de voir la liste de tâches actuelles.

 

 

 

Dans le menu de droite, cliquer sur « Créer un tâche ».

 

 

Une fenêtre apparaît il faut maintenant définir les paramètres de cette tâche.

  • Nom : wsuscleanup
  • Options de sécurité :
    • Exécuter si l’utilisateur n’est pas connecté
    • Exécuter avec les autorisations maximales (Cocher)

 

 

Dans l’onglet « Déclencheur », cliquer sur nouveau puis choisir les paramètres permettant de déclencher cette tâche.

 

  • Paramètre :
    • Chaque semaine
    • Démarrer : Définir le premier jour et heure du démarrage de cette tâche
    • Répéter toues les 1 semaines le : Lundi

       

  • Paramètres avancés : Activée (Cocher)

 

 

 

Dans l’onglet « Action », cela permet de paramétrer ce que l’on souhaite exécuter. Ici nous souhaitons exécuter un script Powershell.

  • Action : Démarrer un programme
  • Paramètre :
    • Programme/Script : Entrer le chemin direct de l’exécutable powershell (C:\\Windows\System32\WindowsPowerShell\v1.0\powershell.exe)
    • Ajouter des arguments : -ExecutionPolicy RemoteSigned –NoProfile –File D:\wsuscleanup\wsuscleanup.ps1

       

      • -ExecutionPolicy RemoteSigned : Permet l’exécution d’un script powershell
      • -NoProfile : Lance le script sans utiliser le profil d’un utilisateur
      • -File … : Chemin de l’endroit où se trouve le script à exécuter

 

 

 

Dans l’onglet « Conditions », laisser les options par défauts.

 

 

Dans l’onglet « Paramètres », cocher « Si la tâche échoue, recommencer tous les » puis définir les paramètres souhaités.

 

Pour finir cliquer sur « OK », la tâche est maintenant prête à fonctionner. Cela permettra maintenant à l’utilitaire de nettoyage de WSUS de se lancer de façon automatique, cela permettra de libérer régulièrement de l’espace de stockage en faisant le tri des mises à jours non utilisées et/ou obsolètes.

 

IV. Résultat final

 

La mise en application de ce script permettra de faire un nettoyage des mises à jour WSUS :

  • Mises à jour et révisions de mises à jour inutilisées
  • Fichiers de mise à jour inutiles
  • Mises à jour ayant expiré
  • Mises à jour remplacées

Ce script s’exécutera tous les lundis à 01h

Source: https://bdarey.wordpress.com/2014/04/18/mise-en-place-dun-script-powershell-permettant-le-nettoyage-des-mises-a-jour/