Добавить NotifyOfDisabledJobs.ps1

This commit is contained in:
2026-06-26 08:15:33 +00:00
commit 0b799aeb55

93
NotifyOfDisabledJobs.ps1 Normal file
View File

@@ -0,0 +1,93 @@
<#
************************************************************************************
PowerShell script that checks for disabled jobs and sends an e-mail containing the list
of disabled Veeam jobs.
************************************************************************************
#>
Add-PSSnapin -Name VeeamPSSnapIn -ErrorAction SilentlyContinue
$ScriptDir = 'C:\setup\script'
$JobExclusionFilterFile = "$ScriptDir\NotifyOfDisabledJobs_EXCLUSIONS.IN"
$MailTo = @(
"KrapivinAA@nornik.ru"
"RudenkoVV@nornik.ru"
"smolinmv@nornik.ru"
)
$MailFrom = "smolinmv@nornik.ru"
$MailSubject = "ALERT: Veeam jobs disabled"
$SMTPServer = ""
$SMTPPort = 587
$SMTPUser = "smolinmv@nornik.ru"
$SMTPPass = ""
$SMTPUseSSL = $true
# Использовать TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$DisabledJobs = Get-VBRJob | Where-Object {
$_.Info.IsScheduleEnabled -eq $false
}
if ($DisabledJobs) {
if ((Test-Path $JobExclusionFilterFile) -and
(-not [string]::IsNullOrWhiteSpace((Get-Content $JobExclusionFilterFile)))) {
$JobsToExclude = Get-Content $JobExclusionFilterFile
$DisabledJobsWithExclusions = $DisabledJobs.Name |
Select-String -Pattern $JobsToExclude -NotMatch |
Out-String
$JobsToExclude = $JobsToExclude | Out-String
$FinalReport = $DisabledJobsWithExclusions
}
else {
Write-Host "No job exclusion filter set"
$JobsToExclude = "None"
$FinalReport = $DisabledJobs.Name | Out-String
}
$EmailBody = @"
Пожалуйста, проверьте следующие отключенные задания Veeam и повторно включите их, повторно включите или удалите расписание, либо добавьте их в файл списка исключений.:
$FinalReport
Задания, имеющие следующие поисковые фильтры, исключаются из отчета.:
$JobsToExclude
"@
Write-Host $EmailBody
$SMTPCredential = New-Object System.Management.Automation.PSCredential(
$SMTPUser,
(ConvertTo-SecureString $SMTPPass -AsPlainText -Force)
)
# Отключаем проверку сертификата
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {
param($sender, $certificate, $chain, $sslPolicyErrors)
return $true
}
try {
$mail = New-Object System.Net.Mail.MailMessage
$mail.From = $MailFrom
foreach ($Recipient in $MailTo) {
$mail.To.Add($Recipient)
}
$mail.Subject = $MailSubject
$mail.Body = $EmailBody
$mail.IsBodyHtml = $false
$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort)
$smtp.EnableSsl = $SMTPUseSSL
$smtp.Credentials = $SMTPCredential
$smtp.Send($mail)
Write-Host "E-mail sent successfully." -ForegroundColor Green
}
catch {
Write-Host "SMTP Error:" -ForegroundColor Red
Write-Host $_.Exception.Message -ForegroundColor Red
if ($_.Exception.InnerException) {
Write-Host $_.Exception.InnerException.Message -ForegroundColor Yellow
}
}
finally {
# Возвращаем стандартную проверку сертификатов
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = $null
if ($mail) {
$mail.Dispose()
}
if ($smtp) {
$smtp.Dispose()
}
}
}
else {
Write-Host "No disabled jobs"
}