【问题标题】:Add html column in powershell在 powershell 中添加 html 列
【发布时间】:2014-03-30 01:31:52
【问题描述】:

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

  1. 创建时间
  2. 身份证
  3. 级别显示
  4. 留言

我的脚本是:

$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)

我已经找了好几天了,但我真的找不到办法。 你能帮帮我吗?

【问题讨论】:

    标签: powershell


    【解决方案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 的列,以及另一个查看事件属性属性中第一项的值的示例:

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

    一些示例资源:

    如果您发现自己经常使用这些,并且您使用的是 PowerShell ISE 3 或更高版本,请添加一个 sn-p!这是迄今为止我收藏中最常用的sn-p

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

    干杯!

    【讨论】:

      猜你喜欢
      • 2013-04-18
      • 2014-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 2020-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多