Имя пользователя:
Пароль:
 

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

Пользователь


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

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


Сделал вывод в таблицах HTML, все получилось. Теперь встала другая задача для усовершенствования скрипта.

Для начала распишу для чего все это делается и как:
1. Скрипт предназначен для выявления проблем хранения бэкапов
- находит файлы по маске созданные за вчерашний день
- находит каталоги в которых по маске не созданы файлы за вчерашний день
- записывает результаты в переменную и отправляет на эл. ящик

2. Сам скрипт:
читать дальше »

Код: Выделить весь код
### Дата и пути ###
$Days = "-1"
$Date = Get-Date 
$Yesterday = Get-Date $Date.AddDays($Days) -Format "dd/MM/yyyy"
$YesterdayF = Get-Date $Yesterday -Format "yyyyMMdd"
$Path = "Пусть к каталогу"
$Host1 = "Имя хоста"

### Стиль для HTML ###
$Style = "<style>"
$Style = $Style + "BODY{background-color:#FFFFFF; font-family: Geneva, Arial, Helvetica, sans-serif; font-size: 12px;}"
$Style = $Style + "TABLE{border-width: 3px; border-style: solid; border-color: white; border-collapse: collapse;}"
$Style = $Style + "TH{text-align:left; border-width: 3px; padding: 8px; border-style: solid; border-color: white; background-color:#BDBDBD}"
$Style = $Style + "TD{text-align:left; border-width: 3px; padding: 8px; border-style: solid; border-color: white; background-color:#DEDEDE}"
$Style = $Style + "</style>"

### Поиск несуществующих файлов с заданным фильтром ###
$NotExist = Get-ChildItem -Path $Path -Recurse | 
Where-Object {$_.PsIsContainer} | 
Where-Object {!($_.GetFiles()| Where-Object {".bak",".zip" -eq $_.Extension} | Where-Object {$_.Name -like "*$YesterdayF*"})}

### Поиск существующих файлов с заданным фильтром ###
$Exist = Get-ChildItem -Path $Path -Recurse -Include "*.*" | 
Where-Object {".bak",".zip" -eq $_.Extension} |
Where-Object {$_.Name -like "*$YesterdayF*"}

$Body = @(
$Style

### Условие: если нет указанных файлов по заданному фильтру - выводит в таблицу каталог где их нет ###
if ($NotExist -gt $null) {
	"<font color=red>В каталогах нет обновлений</font>"
	$NotExist | ConvertTo-Html -Fragment @{Label="Каталог";e={$_.Name}}, @{Label="Последнее обновление";e={$_.LastWriteTime}}

### Условие: если все впорядке и файлы есть - выводит в таблицу список файлов и некоторые свойства файла ###
if ($Exist -gt $null) {
	"<br><font color=green>$Host1 - Файлы обновленных бэкапов за $Yesterday</font>"
	$Exist | ConvertTo-Html -Fragment @{Label="Тип";e={$_.Extension}}, @{Label="Каталог файла";e={$_.Directory.Name}}, @{Label="Имя файла";e={$_.BaseName}}, @{Label="Размер Мб";e={"{0:N0}" -f ($_.Length/1mb)}}
}
) | Out-String

### Почтовые переменные ###
$EmailTo = "backup@mail.ru"
$Subject = "Отчет о бэкапах за $Yesterday на $Host1"
$EmailFrom = "backup@mail.ru"

### Настройки SMTP на .NET  ###
$SMTPServer = "server.mail.ru"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25) 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("backup@mail.ru", "password"); 
$Message = New-Object Net.Mail.MailMessage($EmailFrom, $EmailTo, $Subject, $Body)
$Message.IsBodyHtml = $True
$SMTPClient.Send($Message)


Теперь о модификации:
1. Возникла мысль все переделать так, чтобы в другую переменную заносились данные еще и за позавчерашний день по аналогии (файлы хранятся там же) и потом нужно сделать сравнение двух переменных (за вчерашний день и за позавчерашний день) по их свойствам. Результат нужно вывести в единую таблицу и потом отправлять по почте.

Сравнение:
1. Размер файла (если он уменьшился на 0.5мб, то нужно как-то это отметить в таблице, например поставить воскл. знак в сл. столбце)
2. Если нет файла за вчера, выводит в строку за позавчера и так же воскл. знак в сл. графе

В общем задумка примерно такая, но не знаю как ее реализовать и возможно ли это вообще... Буду всем признателен, кто поможет в разработке данного скрипта. Спасибо заранее.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:13, 19-09-2012 | #18