Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


$erroractionpreference = "SilentlyContinue"
$a = New-Object -comobject Excel.Application
$a.visible = $True
$b = $a.Workbooks.Add()
$c = $b.Worksheets.Item(1)
$c.Cells.Item(1,1) = "Адрес ПК"
$c.Cells.Item(1,2) = "Статус"
$c.Cells.Item(1,3) = "Имя ПК"

$d = $c.UsedRange
$d.Interior.ColorIndex = 19
$d.Font.ColorIndex = 11
$d.Font.Bold = $True
$d.EntireColumn.AutoFit($True)

$intRow = 2

$colComputers = get-content C:\servers.txt
foreach ($strComputer in $colComputers){
$hostname = [System.Net.Dns]::GetHostbyAddress($strcomputer).hostname
$c.Cells.Item($intRow, 1) = $strComputer.ToUpper()
$ping = new-object System.Net.NetworkInformation.Ping
$Reply = $ping.send($strComputer)
if ($Reply.status –eq "Success") {
$c.Cells.Item($intRow, 2) = "Работает"

} else {

$c.Cells.Item($intRow, 2) = "Не работает"
$EmailFrom = 'mail.ru'
$EmailTo = '*@sms.ru
$Subject = "Не работает хост $hostname"
$Body = "IP: $strcomputer"
$SMTPServer = 'smtp.mail.ru'
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25)
$SMTPClient.Credentials = New-Object Net.NetworkCredential("*@mail.ru", "*****");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
}
$c.Cells.Item($intRow, 2) = "Не работает"
}
$Reply = ""
$c.Cells.Item($intRow, 3) = "$hostname"
$intRow = $intRow + 1

$d.EntireColumn.AutoFit()


Вот что получилось, она отправляет смс все как положено, но только выполняется разово, без интервала. И все таки не сохраняет ексель, помогите пожалуйста задать интервал времени пинга и что бы писался лог в екселе.

Еще очень бы хотелось его заставить что бы он например делал пинг, ожидал, снова пинг, снова ждал минуту, и контрольный пинг, после чего отправлял смс о том что сервер не доступен.
Суть в том что например в момент пинга железо может находиться в ребуте. и хотелось бы избежать лишних смс.

Отправлено: 08:56, 20-03-2014 | #5