Используя несколько фрагментов кода здесь и на веб-сайте VMware, я создал следующий код, который работает:
Connect-ViServer server
$body = Get-Folder -name vm | Get-VM | Get-Snapshot | Select Name, VM, SizeMb, Created | Out-String
send-mailmessage -From "myemail.com" -To "myemail.com" -SmtpServer "myserver.com" -Body $body -Subject "Snapshot Report"
Результат, который я получаю, выглядит так:
Name VM SizeMB Created
---- -- ------ -------
snapshot name server ...3507232666015625 11/6/2013 11:53...
snapshot name server ...4918060302734375 11/6/2013 10:30...
snapshot name server... ...0483551025390625 11/6/2013 10:32:...
snapshot name server ...2000579833984375 11/6/2013 3:58:34 PM
Я полагаю, должен быть способ отформатировать вывод так, чтобы он точно отображал размер в мегабайтах с максимумом всего 3 десятичных знака и отображал все время создания. Моя проблема, которую я знаю, где-то здесь:
| Select Name, VM, SizeMb, Created | out-string
Кто-нибудь знает, как форматировать вывод из Select
чтобы указать максимум 2-3 десятичных знака?
Вы можете использовать строку формата в вычисляемом свойстве, чтобы ограничить вывод двумя цифрами. Вы также можете использовать -AutoSize
(или просто -a
) параметр Format-Table
командлет для корректировки ширины столбца. Полный пример:
$ body = Get-Folder -name vm | Get-VM | Get-Snapshot | Выберите Имя, ВМ, @ {name = 'SizeMb'; выражение = {'{0: 0.00}' -f $ _. SizeMb}}, Создано | Out-String