У меня есть следующая команда, запускаемая из скрипта powershell, которая дает мне необходимую информацию и все красиво отформатирована в таблице. Команда:
gcloud --project $gcpProject compute snapshots list --format="table[box,title='GCP Project:$gcpProject snapshots for $yesterday'](name,creationTimestamp,diskSizeGb,storageBytes)" --filter="creationTimestamp.date('%Y-%m-%d')=$yesterday"
У меня есть Start-Transcript -path $ Log1 рядом с началом этого скрипта.
Это вывод команды gcloud, которую я получаю в PS:
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ GCP snapshots │
├─────────────────────────────────────────────────────┬───────────────────────────────┬──────────────┬───────────────┤
│ NAME │ CREATION_TIMESTAMP │ DISK_SIZE_GB │ STORAGE_BYTES │
├─────────────────────────────────────────────────────┼───────────────────────────────┼──────────────┼───────────────┤
│ snapshot1-us-central1-a-20191024022411-1ub96cw9 │ 2019-10-23T19:24:11.743-07:00 │ 500 │ 1104631168 │
│ snapshot2-us-east1-b-20191024020148-iusphq0h │ 2019-10-23T19:01:49.100-07:00 │ 900 │ 1129102848 │
└─────────────────────────────────────────────────────┴───────────────────────────────┴──────────────┴───────────────┘
Именно так я хочу, чтобы получатель электронной почты видел его, когда он открывает свою электронную почту. Но я не могу понять, что мне нужно сделать, чтобы отправить это как $ тело письма и правильно отформатировать. В Notepad ++ это тоже выглядит идеально, но не в том случае, если я скопирую и вставлю его в новое письмо.
Когда я получаю письмо, таблица становится бессмысленной (строки сделаны с кучей символов ????) и таблицанеправильно отформатирован. Я попробовал ConvertTo-Html и -BodyAsHtml, но ничего из этого не сработало.
Вот мой код для отправки электронного письма:
If (Test-Path $Log1) {
$body = @(Get-Content -Path $Log1).
Where({ $_.Trim() -notin $pattern2 -and $_ -NotMatch "End time: 20.*|Start time: 20.*" }) # Trimming some things from the Log1 file that I don't want included in the email
send-MailMessage -SmtpServer $SmtpServer -Port $SmtpPort -Credential $Cred -UseSsl -Verbose -To $to -From $from -Subject $subject -Body ($body | out-string)
}