Jakiś czas temu napisałem swój pierwszy kod w PowerShell, w sumie nie ma się czym chwalić, ale jeśli ktoś ma podobny problem jak ja – już ma gotowca. Podłoże problemu jest następujące: w harmonogramie wykonuje się (podobno spójna) kopia bazy danych i plików (jakaś rzeźba firmy, która pisze dla nas oprogramowanie), Dział Informatyczny (a w szczególności ASI) musi pilnować, by proces kończył się powodzeniem, a jego wyniki należy notować (ręcznie!) w odpowiednim zestawieniu. Ostatniego kroku niestety nie można zautomatyzować, ale po co klikać w systemie i sprawdzać wynik danej operacji, zliczać wielkość folderów, itp., skoro można zapomocą automatu agregować te informacje i odczytywać to z rana w odpowiednio przygotowanej wiadomości. I właśnie tutaj zadanie dla PowerShell.
$dir = "D:\backup"
$size = 0
$smtpServer = “smtp.domain.tld"
Get-ChildItem -recurse $dir | % {$size=$size+$_.Length}
Get-Item $dir | foreach { $last = $_.lastwritetime }
$msg = new-object Net.Mail.MailMessage
Get-ChildItem "$dir\*.TXT" -name | foreach {
$att = new-object Net.Mail.Attachment("$dir\$_")
$msg.Attachments.Add($att)
}
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$msg.From = “backupmonitor@domain.tld"
$msg.To.Add(”admin@domain.tld")
$msg.To.Add(”chief@domain.tld")
$msg.Subject = “Monitor kopii zapasowej"
$msg.Body = “Rozmiar katalogu: $size`nData modyfikacji katalogu: $last`n"
$smtp.Send($msg)
Bez komentarza w kodzie, ale mniej więcej wygląda to tak:
- obliczamy zajętość miejsca przez zadany katalog,
- sprawdzamy datę jego modyfikacji,
- przygotowujemy wiadomość dodając do niej załączniki (pliki tekstowe),
- …i wysyłamy!
Proste? Proste.
Teraz grzebię w AD…