PowerShell Преобразование «возврат» в HTML - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть сценарий PowerShell, который запускает robocopy на двух дисках для резервного копирования, а затем отправляет электронное письмо с результатами работы.Работает каждый вечер.Когда я изначально писал сценарий, мои тестовые резервные копии были достаточно маленькими, чтобы я мог включить журнал резервного копирования в текст сообщения, а также в качестве вложения.Однако из-за того, что сценарий фактически выполняет мои резервные копии в реальном времени, журнал слишком длинен для этого, более 100 МБ, поэтому я не получаю уведомления о состоянии задания.

Я ищу способ получитьпросто краткое изложение работы.Я натолкнулся на сценарий, который даст мне именно то, что я хочу, но я не знаю, как превратить вывод сценариев в то, что я могу отправить по электронной почте в виде вложения или включить в текст сообщения электронной почты.

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

LogFilePath  : 150208TargetServer_S_MSO_R.TXT
Start        : Sun Feb 08 21:00:01 2015
End          : Sun Feb 08 21:05:53 2015
Source       : \\SourcerServer\S$\Group\MSO\
Destination  : \\TargetServer\R$\Platinum_Service_Replications\Group\MSO\
TotalDirs    : 3217
TotalFiles   : 30920
TotalMBytes  : 186,863.61
CopiedDirs   : 1
CopiedFiles  : 4
CopiedMBytes : 55.84
FailedDirs   : 0
FailedFiles  : 0
FailedMBytes : 0
SpeedMBMin   : 599.840
SOURCERSERVER:
TARGETSERVER:

Строка кода «Я думаю», которую мне нужно преобразовать в HTML:

return $dataColl, $sourceServer, $sourceDrive, $targetServer, $targetDrive, $replicatingSysAdmin, $dataObject.LogFilePath

Я пробовал

$Results = $dataColl, $sourceServer, $sourceDrive, $targetServer,
           $targetDrive, $replicatingSysAdmin, $dataObject.LogFilePath

и

Get-Process |
    select ProcessName $dataColl, $sourceServer, $sourceDrive, $targetServer,
        $targetDrive, $replicatingSysAdmin, $dataObject.LogFilePath |
    ConvertTo-Html |
    Out-File results.html

и даже это

Write-Host $dataColl, $sourceServer, $sourceDrive, $targetServer,
    $targetDrive, $replicatingSysAdmin, $dataObject.LogFilePath

Но я не могу получить никакого вывода, кроме того, что "return" дает мне в командной строке.Может кто-нибудь предложить способ получить HTML или основной текст, который я ищу?Я не привязан к этому сценарию, поэтому, если у кого-то есть лучший метод, это нормально, если я могу втиснуть в свой существующий сценарий robocopy.

Кроме того, если вам нужно, чтобы я загрузил любойобразцы, я могу.

1 Ответ

0 голосов
/ 13 декабря 2018

Я думаю, у вас есть несколько типов данных здесь.Вы можете создать пользовательский объект или добавить оставшиеся данные в существующий объект, а затем преобразовать его в html.

Измените последнюю строку сценариев ниже

$dataColl | AddMember -MemberType Property -Name sourceServer -Value $sourceServer
$dataColl | AddMember -MemberType Property -Name sourceDrive -Value $sourceDrive
$dataColl | AddMember -MemberType Property -Name targetServer -Value $targetServer
$dataColl | AddMember -MemberType Property -Name targetDrive -Value $targetDrive
$dataColl | AddMember -MemberType Property -Name LogFilePath -Value$dataObject.LogFilePath

, затем

return $dataColl

вы можете преобразовать вывод скрипта в html, как показано ниже.

.\script.ps1 | ConvertTo-html
...