WSB rapport sur Microsoft Teams (Webhook).

Pour continuer la série sur Windows Backup, je vous propose un script permettant de récupérer l’état des Backup Windows sur les serveurs du domaine et d’envoyer un jolie rapport par Email ou par un Webhook Teams !
Petit bonus: les commandes pour ajouter se script à un nouvelle tache planifiée pour un envoi automatique tout les jours !
$jobname = "Windows_Backup_Teams" | |
$action = New-ScheduledTaskAction –Execute "@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy Bypass -File C:\Windows_Backup_Teams_Report.ps1" | |
$trigger = New-ScheduledTaskTrigger -daily -At 7am | |
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -StartWhenAvailable -DontStopOnIdleEnd | |
Register-ScheduledTask -TaskName $jobname -Action $action -Trigger $trigger -RunLevel Highest -Settings $settings |
$ServerList = (Join-Path $PSScriptRoot "BackupsSrv.txt") | |
$webhook = 'Teams WebHook' | |
$client = "Client Name" | |
#Check if server list exists | |
If (!(Test-Path $ServerList)) { | |
Write-Host "Can not get servers list. Script will not continue" -ForegroundColor Red; Exit | |
} | |
$servers = @() | |
$job_details = "" | |
Get-Content $ServerList | Foreach-Object { $servers += $_ } | |
$results = (1..$servers.length) | |
for ($i = 0; $i -lt $servers.length; $i++) { | |
$ConnectionError = 0 | |
Write-Host "Getting result from server: " $servers[$i] | |
try { | |
$Session = New-PSSession -ComputerName $servers[$i] | |
$WindowsVersion = Invoke-Command -session $session -ScriptBlock { (Get-WmiObject win32_operatingsystem).version } | |
if ($WindowsVersion -match "6.1") | |
{ $WBSummary = Invoke-Command -session $session -ScriptBlock { add-pssnapin windows.serverbackup; Get-WBSummary } } | |
else { $WBSummary = Invoke-Command -session $session -ScriptBlock { Get-WBSummary } } | |
Remove-PSSession $Session | |
} | |
catch { | |
Write-Host "Error connecting remote server" | |
write-host "Caught an exception:" -ForegroundColor Red | |
write-host "Exception Type: $($_.Exception.GetType().FullName)" -ForegroundColor Red | |
write-host "Exception Message: $($_.Exception.Message)" -ForegroundColor Red | |
$ConnectionError = 1 | |
} | |
$job_details += "## Serveur : " + $servers[$i] + "`n" | |
if ($ConnectionError -eq 1) { | |
$job_details += "- **Statut** : Error connecting remote server`n" | |
} | |
else { | |
if ($WBSummary.LastBackupResultHR -eq 0) { $job_details += "- **Statut** : Success`n"; $result = "Success" } | |
else { $job_details += "- **Statut** : Failure`n"; $result = "Failure" } | |
$job_details += "- **Date** : " + $WBSummary.LastSuccessfulBackupTime + "`n" | |
if ([string]::IsNullOrEmpty($WBSummary.DetailedMessage)) { $job_details += "- **Message** : Success`n"; $message = "Success" } | |
else { $job_details += "- **Message** : " + $WBSummary.DetailedMessage + "`n"; $message = $WBSummary.DetailedMessage } | |
$job_details += "- **Nombre de sauvegardes** : " + $WBSummary.NumberOfVersions + "`n" | |
if ([string]::IsNullOrEmpty($WBSummary.LastBackupTarget)) { $job_details += "- **Destination** : None`n" } | |
else { $job_details += "- **Destination** : " + $WBSummary.LastBackupTarget + "`n" } | |
Write-Host "Last Backup Result: $result" | |
Write-Host "Last Successful Backup Time:" $WBSummary.LastSuccessfulBackupTime | |
Write-Host "Detailed Message: $message" | |
Write-Host "Number of Backups:" $WBSummary.NumberOfVersions | |
Write-Host "—————————————————————–" | |
} | |
} | |
$body = ConvertTo-Json -depth 3 @{ | |
summary = 'Rapport de sauvegarde' | |
themeColor = '0055DD' | |
sections = @( | |
@{ | |
activityTitle = "Sauvegarde du client: " + $client + "`n" | |
activityText = "$job_details" | |
} | |
) | |
} | |
Invoke-RestMethod -Method post -ContentType 'Application/Json' -Body $body -Uri $webhook |
https://gist.github.com/HiteaFR/47b7d8b8dc5445332cadb0707aba5de9#file-windows_backup_teams_report-ps1
Utilisation:
Attention: pour l’exemple tous les fichier sont placés directement à la racine du disque C:, pensez à changer les chemins dans le script si vous souhaitez les mettre autre part.
Commencez par créer un fichier BackupsSrv.txt et renseigner le nom de vos serveurs qui sont dans l’AD (un par ligne)
Ensuite créer un « channel » dans l’équipe Teams de votre choix et ajouter le connecteur « Webhook » à celle-ci
Pour finir il suffit de copier coller le l’url du webhook dans le script (ligne 3) et renseigner un nom pour le site/client dont vous voulez les rapports.
Bonus: exécutez les commandes du premier script pour créer un tache planifiée.
Zalman VE500
Voila un outil indispensable que tout technicien doit avoir avec lui, c’est ce boitier qui contient un HDD/SSD et avec le quel on va pouvoir tout simplement booter sur l’image disque que l’on souhaite (ISO, IMG). d’autres options sont aussi présentes comme la sélection du mode HDD, VCD ou les deux ainsi que le cryptage du disque et le verrouillage en écriture.
On en parle sur le blog !IODD ST400 Boîtier 2,5" / USB-C/Bootable Virtual ODD&HDD / Chiffrement AES256 Max jusqu'à 76 chiffres/Protection en écriture / 2541 (ST400/Type USB-C/Modèle Next Gen) Fabriqué en Corée
IODD Mini USB 3.0 256 Bits Secure Encrypted SSD Drive 512 Go