PowerShell将“返回”转换为HTML

时间:2018-12-13 02:03:51

标签: powershell robocopy

我有一个PowerShell脚本,该脚本在两个驱动器上运行robocopy进行备份,然后发送包含工作结果的电子邮件。它每天晚上运行。当我最初编写脚本时,我的测试备份足够小,可以将备份日志包括在邮件正文中,也可以作为附件。但是,由于脚本实际上是在进行实时备份,因此日志太长了,超过100MB,因此我没有收到有关作业状态的通知。

我正在寻找一种仅获得工作摘要的方法。我遇到了一个脚本,该脚本可以满足我的需求,但是我不知道如何将脚本输出转换为可以作为附件发送电子邮件或包含在电子邮件正文中的东西。

我找到的脚本在这里:Capturing Robocopy Metrics: Scanning the Log File。我想要的输出看起来像这样:

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 :(得分:0)

我认为,您在这里有多种类型的数据。您可以创建一个自定义对象,也可以将剩余数据添加到现有对象中,然后转换为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