在powershell中添加html列

时间:2014-03-29 00:43:15

标签: powershell

我正在尝试从Windows Serve Backup日志创建HTML备份报告。此报告返回包含以下属性的最新日志:

  1. TimeCreated
  2. ID
  3. 级别显示
  4. 消息
  5. 我的脚本是:

    $lastsevendays = (get-date) - (new-timespan -day 7)
    $MyObject = Get-WinEvent -FilterHashTable @{LogName='Microsoft-Windows-Backup'; StartTime=$lastsevendays}
    
    $Header = @"
    <style>
    TABLE {border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}
    TH {border-width: 1px;padding: 3px;border-style: solid;border-color: black;background-color: #6495ED;}
    TD {border-width: 1px;padding: 3px;border-style: solid;border-color: black;}
    </style>
    "@ 
    
    $MyObject | Select 'TimeCreated', 'LevelDisplayName','ID', 'Message' | ConvertTo-HTML -Head $Header | Out-file C:\script.htm
    

    现在我想在“消息”列的右侧添加一列。通常,此列将返回备份的大小。我可以使用以下命令获得备份大小:

    (($objFSO.GetFolder("C:\Users\Backup").Size) / 1MB)
    

    我一直在寻找几天,但我真的看不到办法。 你能帮帮我吗?

1 个答案:

答案 0 :(得分:1)

计算的属性会有所帮助。一般格式如下:

@{ Name = "PropertyNameHere"; Expression = { <# Code to define property value here, using $_ as the current object #> }}

您的方案中的示例。我假设您提前定义$ objFSO。请注意,可能有更好的方法来拉大小。

#Everything on one line!
    $MyObject |
        Select 'TimeCreated', 'LevelDisplayName','ID', 'Message', @{ Name = "BackupSize"; Expression = { (($objFSO.GetFolder("C:\Users\Backup").Size) / 1MB) }} |
        ConvertTo-HTML -Head $Header |
        Out-file C:\script.htm

#### #### #### #### ####

#Alternative:  Define calculated property hash(es) ahead of time
    $BackupSize = @{ Name = "BackupSize"; Expression = { (($objFSO.GetFolder("C:\Users\Backup").Size) / 1MB) } }

    $MyObject |
        Select 'TimeCreated', 'LevelDisplayName','ID', 'Message', $BackupSize |
        ConvertTo-HTML -Head $Header |
        Out-file C:\script.htm

添加一个始终具有值42的列的另一个示例,以及另一个查看events属性属性中第一个项的值的示例:

Get-WinEvent -LogName System -MaxEvents 5 |
    Select TimeCreated, Id, @{ Name = "StaticProperty"; Expression = {42}}, @{ Name = "Property1"; Expression = {$_.Properties[0].value}}

一些示例资源:

如果您经常使用这些,并且使用PowerShell ISE 3或更高版本,请添加一个代码段!这是我的收藏中最常用的片段

New-IseSnippet -Title "Calculated Property" -description "Create a calculated property" -text '@{ label = ""; expression = {} }' -Author Blah -CaretOffset 12 -ErrorAction SilentlyContinue -force

干杯!