-
01 - Introduction à Powershell
-
02 - Commandes de base Powershell
-
03 - Navigation dans le système
-
04 - Gestion des utilisateurs locaux
-
05 - Les bases du scripting Powerhshell
-
06 - Gestion des utilisateurs Active Directory
-
07 - Automatisation des taches de gestion utilisateurs
-
08 - Automatisation des processus système
-
09 - Script de maintenance serveur
-
10 - Gestion avancée en PowerShell
-
11 - Formater les sorties des scripts
-
12 - Gestion des fichiers de log
-
13 - Etude de cas - Automatisation de taches courantes
-
14 - Optimisation des scripts et bonnes pratiques
-
16 - Algorithmie et Powershell
-
QCM de fin de parcours
09.3 Travaux pratiques
3. Travaux pratiques : Script de maintenance basique pour un serveur
3.1. Script complet : ServerMaintenance.ps1
<#
.SYNOPSIS
Effectue une maintenance basique du serveur : nettoyage, sauvegarde et mises à jour.
#>
$logFile = "C:\Temp\ServerMaintenance_$(Get-Date -Format 'yyyyMMdd').log"
function Write-Log {
param ([string]$message)
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$logMessage = "[$timestamp] $message"
Write-Output $logMessage
Add-Content -Path $logFile -Value $logMessage
}
# 1. Nettoyage des logs
Write-Log "Début du nettoyage des logs..."
$logPath = "C:\Logs"
$daysToKeep = 30
Get-ChildItem -Path $logPath -File -Recurse | Where-Object {
$_.LastWriteTime -lt (Get-Date).AddDays(-$daysToKeep)
} | ForEach-Object {
Remove-Item -Path $_.FullName -Force
Write-Log "Suppression de $($_.FullName)"
}
# 2. Sauvegarde des données
Write-Log "Début de la sauvegarde des données..."
$source = "C:\Data"
$destination = "\\Server\Backup\Data_$(Get-Date -Format 'yyyyMMdd')"
New-Item -Path $destination -ItemType Directory -Force | Out-Null
Copy-Item -Path "$source\*" -Destination $destination -Recurse -Force
Write-Log "Sauvegarde de $source vers $destination terminée."
# 3. Vérification des services critiques
Write-Log "Vérification des services critiques..."
$criticalServices = @("Spooler", "DHCP", "DNS")
foreach ($service in $criticalServices) {
$status = (Get-Service -Name $service).Status
if ($status -ne "Running") {
Write-Log "Service $service est $status - Redémarrage..."
Start-Service -Name $service
}
}
# 4. Installation des mises à jour (optionnel)
Write-Log "Vérification des mises à jour..."
if (Get-Module -ListAvailable -Name PSWindowsUpdate) {
Import-Module PSWindowsUpdate
$updates = Get-WindowsUpdate
if ($updates) {
Write-Log "Mises à jour disponibles - Installation..."
Install-WindowsUpdate -AcceptAll -AutoReboot
}
} else {
Write-Log "Module PSWindowsUpdate non installé - Mises à jour ignorées."
}
Write-Log "Maintenance terminée."
3.2. Planification du script de maintenance
$action = New-ScheduledJobAction -Execute "PowerShell.exe" -Argument "-NoProfile -File `"C:\Scripts\ServerMaintenance.ps1`"" $trigger = New-JobTrigger -Weekly -DaysOfWeek Sunday -At 1am Register-ScheduledJob -Name "ServerMaintenance" -Action $action -Trigger $trigger
Les commentaires ne sont pas activés sur ce cours.