Configurez des tâches de maintenance automatisées pour garder Chocolatey à jour et assurer des performances optimales sur votre parc d'appareils.
Créez un script de tâche planifiée pour les mises à jour automatiques de Chocolatey :
# Script de mise à jour automatique de Chocolatey
# Enregistrer sous : ChocolateyMaintenance.ps1
Start-Transcript -Path "$env:ProgramData\chocolatey\logs\maintenance.log" -Append
try {
Write-Output "Démarrage de la maintenance de Chocolatey - $(Get-Date)"
# Mettre à jour Chocolatey lui-même
Write-Output "Mise à jour de Chocolatey..."
& choco upgrade chocolatey -y
# Mettre à jour tous les paquets installés
Write-Output "Mise à jour de tous les paquets..."
& choco upgrade all -y
# Nettoyer les fichiers temporaires
Write-Output "Nettoyage des fichiers temporaires..."
& choco cache clean
Write-Output "Maintenance terminée avec succès - $(Get-Date)"
} catch {
Write-Error "Échec de la maintenance : $($_.Exception.Message)"
} finally {
Stop-Transcript
}
Déployez ce script de maintenance comme une autre application Win32 avec ces paramètres :
- Commande d'installation :
powershell.exe -executionpolicy bypass -file ChocolateyMaintenance.ps1 - Règle de détection : Détection basée sur un script vérifiant le dernier horodatage d'exécution
- Affectation : Requis, récurrent tous les 7 jours
Créez un script de détection pour la tâche de maintenance :
# Script de détection de maintenance
$logPath = "$env:ProgramData\chocolatey\logs\maintenance.log"
$maxAge = (Get-Date).AddDays(-7)
if (Test-Path $logPath) {
$lastWrite = (Get-Item $logPath).LastWriteTime
if ($lastWrite -gt $maxAge) {
Write-Output "Maintenance effectuée dans les 7 jours"
exit 0
}
}
Write-Output "Maintenance requise"
exit 1
Configurez les paramètres globaux de Chocolatey pour une utilisation en entreprise :
# Script de configuration d'entreprise
choco config set cacheLocation "$env:ProgramData\chocolatey\cache"
choco config set commandExecutionTimeoutSeconds 14400
choco config set containsLegacyPackageInstalls true
choco config set maxDownloadRateBitsPerSecond 10485760
choco feature enable -n allowGlobalConfirmation
choco feature enable -n logEnvironmentValues
choco feature disable -n showNonElevatedWarnings
Avertissement : Les mises à jour automatiques peuvent potentiellement casser des applications si les mises à jour des paquets introduisent des changements incompatibles. Envisagez de tester les mises à jour dans un groupe pilote avant de les déployer sur les appareils de production.
Mettez en place une surveillance des tâches de maintenance en créant un script de rapport simple :
# Script de rapport de maintenance
$devices = Get-Content "devices.txt" # Liste des noms d'appareils
$report = @()
foreach ($device in $devices) {
try {
$logPath = "\\$device\c$\ProgramData\chocolatey\logs\maintenance.log"
if (Test-Path $logPath) {
$lastRun = (Get-Item $logPath).LastWriteTime
$status = if ($lastRun -gt (Get-Date).AddDays(-7)) { "OK" } else { "En retard" }
} else {
$status = "Pas de journal"
$lastRun = "Jamais"
}
$report += [PSCustomObject]@{
Device = $device
LastMaintenance = $lastRun
Status = $status
}
} catch {
$report += [PSCustomObject]@{
Device = $device
LastMaintenance = "Erreur"
Status = "Inaccessible"
}
}
}
$report | Export-Csv "ChocolateyMaintenanceReport.csv" -NoTypeInformation
$report | Format-Table -AutoSize
Vérification : Vérifiez que le script de maintenance s'exécute avec succès et crée des entrées de journal dans $env:ProgramData\chocolatey\logs\maintenance.log.