пятница, 14 мая 2010 г.

PowerShell скрипт для контроля снапшотов

Luc Dekens, гуру vSphere PowerCLI поделился отличным скриптом для контроля снапшотов.

Скрипт может запускаться по расписанию и отсылать отчет администратору по e-mail для снапшотов старше определенного возраста. В данном случае 7 дней.



$smtpServer = "smtpserver"
$MailFrom = "me@domain.com"
$MailTo = "me@domain.com"
$VISRV = "virtualcenterserver"

function SnapMail ($Mailto, $SnapshotInfo)
{
 $msg = new-object Net.Mail.MailMessage
 $smtp = new-object Net.Mail.SmtpClient($smtpServer)
 $msg.From = $MailFrom
 $msg.To.Add($Mailto)
 $msg.Subject = "Snapshot Reminder"

 $MailText = "This is a reminder email of all the open snaphots greater than 7 days old:"
 $MailText += ($SnapshotInfo | Out-String)

 $msg.Body = $MailText
 $smtp.Send($msg)

}

Connect-VIServer $VISRV

$SnapshotInfo = Get-VM | Get-Snapshot | `
  where { $_.Name.Length -gt 0 -and $_.Created -lt ((Get-Date).AddDays(-7))} | `
  Select VM,Name,Description,Created | Sort Created
SnapMail $mailto $SnapshotInfo

В данном случае скрипт подключится к vCenter с правами текущего аккаунта. Однако в случае с мультидоменной структурой или с standalone хостами, не интегрированными с AD для полностью автматического режима придется указать логина/пароль непосредственно в скрипте.

$VIUsr = "Administrator"
$VIPass = "secretpass"

Connect-VIServer $VISRV -User $VIUsr -Password $VIPass

5 коммент.:

  1. Пароли открытым текстом сохранять нельзя. Это должна быть аксиома для системных администраторов.
    Для полной автоматизации, надо задание (scheduled task) запускать из-под нужной учетной записи. Тогда ничего вводить не придется.
    ОтветитьУдалить
  2. Иван, согласен в общем случае. Тем не менее, если есть standalone хосты, не интегрированные с AD, придется сохранять. Изменил формулировку в посте.
    ОтветитьУдалить
  3. АнонимныйMay 14, 2010 06:00 AM
    А как это запускать в шедулере?
    ОтветитьУдалить
  4. В скрипт надо добавить в начало строку

    add-pssnapin VMware.VimAutomation.Core

    И добавить в Windows Task Scheduler выполнение такой команды:

    C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe "& 'C:\Scripts\set-ft.ps1'"

    Одинарные кавычки на случай если мы хотим скрипту еще параметры передавать - в таком случае внутри кавычек через пробел.
    ОтветитьУдалить
  5. АнонимныйMay 14, 2010 06:30 AM
    Спасибо! Дело очень полезное!
    ОтветитьУдалить