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

Vous aimerez aussi...

Laisser un commentaire

En savoir plus sur Hitéa

Abonnez-vous pour poursuivre la lecture et avoir accès à l’ensemble des archives.

Continue reading