hitéa

Outils

SecureSend Testeur de mot de passe Générateur de mot de passe

Contenu

Blog Guides
Connexion
WSB rapport sur Microsoft Teams (Webhook).
Développement · 3 min de lecture

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...

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 !

This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
$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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
$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.

Partager