newhk
BANNED | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Код: $shops = @{ '192.168.2.1' = 'Филиал1'; '192.168.3.1' = 'Филиал2' } $LogFile = 'C:\IT\Scripts\CheckWebServices\Logs\error.log' $to = 'user@domain.ru' $Links = @( 'http://192.168.3.1/FSCIS/hs/smAPI/Ping' 'http://192.168.2.1/FSCIS/hs/smAPI/Ping' ) $reportBackupName = "\\server\D$\_Backup_Report_Web_Services\OldReports\BackupReport_" + (Get-Date).AddDays(-1).ToString('dd-MM-yyyy') + ".html" $WebStatusReport = "\\server\D$\_Backup_Report_Web_Services\BackupReport.html" if ((Get-Date).Hour -eq 1 -and (Get-Date).Minute -eq 1){ Copy-Item $WebStatusReport -Destination $reportBackupName -Force } $header = " <html> <head> <meta http-equiv='Refresh' content='11' /> <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'> <title>1C Web-monitoring</title> <STYLE TYPE='text/css'> TABLE { width: 800px; /* Ширина таблицы */ border-collapse: collapse; /* Убираем двойные линии между ячейками */ } TD, TH { padding: 3px; /* Поля вокруг содержимого таблицы */ border: 1px solid black; /* Параметры рамки */ } TH { background: #b0e0e6; /* Цвет фона */ } </style> </head> <body> <table width='100%'> <tr bgcolor='#FFFFE0'> <td colspan='7' height='25' align='center'> <font face='tahoma' color='#003399' size='4'><strong>Статус WEB-служб в филиалах</strong></font> </td> </tr> </table> " Set-Content $WebStatusReport $header -Encoding UTF8 $tableHeader = " <table width='100%'><tbody> <tr bgcolor=#FFFFE0> <td width='33%' align='center'>Филиал</td> <td width='33%' align='center'>Статус</td> </tr> " Add-Content $WebStatusReport $tableHeader -Encoding UTF8 foreach ($Link in $Links){ $HttpContent = $null $fil = $Link.Split('/')[2] $filial = $shops.$fil $HttpContent = Invoke-WebRequest -URI $Link -UseBasicParsing Add-Content $WebStatusReport "<td width='33%' bgcolor='LemonChiffon' align='center'><font color='Black' size='3'><B>$filial</B></font></td>" if ($HttpContent.StatusCode -ne 200 -or $HttpContent -eq $null){ if (Invoke-Sqlcmd -ServerInstance server2 -Database TestBase -Username sa -Password 'Password' -Query "Select * From Table1 Where Filial='$Filial'"){ #Add-Content $WebStatusReport "<td width='33%' bgcolor='IndianRed' align='center'><font color='White' size='4'>Не в сети</font></td>" #Add-Content $WebStatusReport "</tr>" Continue } else { $Status = 'False' $Global:Begin = Get-Date $query = "with src (Filial, Status) as ( select '$filial', '$Status' ) MERGE Table1 tgt USING src ON src.Filial = tgt.Filial WHEN MATCHED THEN UPDATE SET Filial = src.Filial, Status = src.Status WHEN NOT MATCHED THEN INSERT (Filial, Status) VALUES (src.Filial, src.Status);" Invoke-Sqlcmd -ServerInstance server2 -Database TestBase -Username sa -Password 'Password' -Query $query Send-MailMessage -SmtpServer server3 -Port 25 -From WebServiceAlert@domain.ru -To $to -Subject ("Внимание! Web-сервис в филиале " + '$filial' + " недоступен...") -Body ("Проблемы с Web-сервисом в филиале -= " + $filial + " =-.`nПроблема зафиксирована в " + $Begin.ToString('dd.MM.yyyy HH:mm:ss')) -Encoding utf8 } Add-Content $WebStatusReport "<td width='33%' bgcolor='IndianRed' align='center'><font color='White' size='4'>Не в сети</font></td>" } else { $Status = 'True' $query = "with src (Filial, Status) as ( select '$Filial', '$Status' ) MERGE Table1 tgt USING src ON src.Filial = tgt.Filial WHEN MATCHED THEN UPDATE SET Filial = src.Filial, Status = src.Status WHEN NOT MATCHED THEN INSERT (Filial, Status) VALUES (src.Filial, src.Status);" Add-Content $WebStatusReport "<td width='7%' bgcolor='PaleGreen' align='center'><font color='Black' size='4'>В сети</font></td>" #Invoke-Sqlcmd -ServerInstance server2 -Database TestBase -Username sa -Password 'Pessword' -Query $query if (Invoke-Sqlcmd -ServerInstance s170016 -Database TestBase -Username sa -Password 'Password' -Query "Select * From Table1 Where Filial='$Filial'"){ $Global:Finish = Get-Date $query = "DELETE Table1 FROM (SELECT * FROM Table1 WHERE Filial='$Filial') AS Selected WHERE Table1.Filial = Selected.Filial" Invoke-Sqlcmd -ServerInstance server2 -Database testbase -Username sa -Password 'Password' -Query $query Send-MailMessage -SmtpServer server3 -Port 25 -From WebServiceAlert@domain.ru -To $to -Subject ("Web-сервис в филиале " + '$filial' + " снова доступен...") -Body ("Web-сервис в филиале -= " + $filial + " =-, восстановлен.`nВремя возобновления сервиса: " + (Get-Date).ToString('dd.MM.yyyy HH:mm:ss')) -Encoding utf8 } } Add-Content $WebStatusReport "</tr>" } Add-Content $WebStatusReport "</table></body></html>" | | Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 12:33 20-01-2023 | Исправлено: newhk, 12:39 20-01-2023 |
|