Скрипт PowerShell для контроля работы серверов
Задача:
Пинговать сервер и при отсутствие ответа записать в файл время и имя сервера который не ответил. А так же выводить сообщение на экран машины на которой запущен скрипт.
$file = 'D:\Logs\servers.txt'#файл со списком серверов
$DateNow = (Get-Date -format "dd-MM-yyyy-HH-mm-ss").ToString() #текущая дата в заданном формате и переводим в строковый тип
$DatePing = (Get-Date -format "dd-MM-yyyy-HH-mm-ss").ToString() #текущая дата в заданном формате и переводим в строковый тип для пинга
$fileerr = "D:\Logs\ServerErr-$DateNow.txt" # файл для записи ошибок пинга
New-Item -Path $fileerr -ItemType file #создаем новый файл с заданным именем
$servers = gc $file
$a = 0 #просто переменная
#Цикл бесконечный
While ($a -le 5)
{
foreach ($Server in $Servers)
{
$DatePing = (Get-Date -format "dd-MM-yyyy;HH-mm-ss").ToString() #текущая дата в заданном формате и переводим в строковый тип
if (test-Connection -ComputerName $Server -Count 2 -Quiet)
{
$m = "$Server;$DatePing;Все хорошо"
write-host $m -ForegroundColor Green #пишем в консоль результат выполнения
}
else
{
write-Host "$Server;$DatePing;Не пингуется" -ForegroundColor Red #передаем в консоль какой сервер не пингуется
$m = "$server;$DatePing;Сервер не пингуется" #создаем строку в конорой фраза и сервер который не ответил на запрос
Out-File -FilePath $fileerr -InputObject $m -Append #выводим в файл результат работы
$m1 = "$server - Сервер не пингуется"
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$Result=[Windows.Forms.MessageBox]::Show($m1, "Беда",[Windows.Forms.MessageBoxButtons]::Ok, [Windows.Forms.MessageBoxIcon]::STOP)
}
}#конец цикла foreach
}#end While#
Пинговать сервер и при отсутствие ответа записать в файл время и имя сервера который не ответил. А так же выводить сообщение на экран машины на которой запущен скрипт.
$file = 'D:\Logs\servers.txt'#файл со списком серверов
$DateNow = (Get-Date -format "dd-MM-yyyy-HH-mm-ss").ToString() #текущая дата в заданном формате и переводим в строковый тип
$DatePing = (Get-Date -format "dd-MM-yyyy-HH-mm-ss").ToString() #текущая дата в заданном формате и переводим в строковый тип для пинга
$fileerr = "D:\Logs\ServerErr-$DateNow.txt" # файл для записи ошибок пинга
New-Item -Path $fileerr -ItemType file #создаем новый файл с заданным именем
$servers = gc $file
$a = 0 #просто переменная
#Цикл бесконечный
While ($a -le 5)
{
foreach ($Server in $Servers)
{
$DatePing = (Get-Date -format "dd-MM-yyyy;HH-mm-ss").ToString() #текущая дата в заданном формате и переводим в строковый тип
if (test-Connection -ComputerName $Server -Count 2 -Quiet)
{
$m = "$Server;$DatePing;Все хорошо"
write-host $m -ForegroundColor Green #пишем в консоль результат выполнения
}
else
{
write-Host "$Server;$DatePing;Не пингуется" -ForegroundColor Red #передаем в консоль какой сервер не пингуется
$m = "$server;$DatePing;Сервер не пингуется" #создаем строку в конорой фраза и сервер который не ответил на запрос
Out-File -FilePath $fileerr -InputObject $m -Append #выводим в файл результат работы
$m1 = "$server - Сервер не пингуется"
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$Result=[Windows.Forms.MessageBox]::Show($m1, "Беда",[Windows.Forms.MessageBoxButtons]::Ok, [Windows.Forms.MessageBoxIcon]::STOP)
}
}#конец цикла foreach
}#end While#
Комментарии
Отправить комментарий