TOG*_*EEK 0 html powershell hashtable
我遵循了一个创建哈希表并将其转换为HTML的示例
http://stackoverflow.com/questions/19455435/converting-hashtable-in-powershell
Run Code Online (Sandbox Code Playgroud)
这是基于此OP的答案的示例:
$Summary = @{
Computers=$ADServerCount.count
DMZ=$TotalDMZ.count
No_Ping=$TotalNoPing.count
Reg_Failed=$TotalRegFailed.count
RebootPending=$TotalPendingReboot.count
RebootNotRequired=$TotalNoPatchRequired.count
}
[PSCustomObject]$Summary | Convertto-HTML -fragment
Run Code Online (Sandbox Code Playgroud)
...这就是我只运行$ Summary的结果-正是我期望的结果:
Name Value
---- -----
RebootNotRequired 69
DMZ 10
Computers 341
Reg_Failed
RebootPending 137
No_Ping 80
Run Code Online (Sandbox Code Playgroud)
但是,如果尝试转换为HTML,请运行[PSCustomObject] $ Summary | Convertto-HTML -fragment,我没有上面的值:
<table>
<colgroup>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
<col/>
</colgroup>
<tr><th>IsReadOnly</th><th>IsFixedSize</th><th>IsSynchronized</th><th>Keys</th>
<th>Values</th><th>SyncRoot</th><th>Count</th></tr>
<tr><td>False</td><td>False</td><td>False</td><td>System.Collections.Hashtable+
KeyCollection</td><td>System.Collections.Hashtable+ValueCollection</td><td>Syst
em.Object</td><td>1</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)
请帮忙。谢谢
这是更多代码-如您所见,还有两个可以转换为HTML表的变量:$ GroupPendingRebootbyOwner和$ OlderThan30Days,但是$ Summary返回gobbledygook。我已经截断了通过电子邮件发送的其余代码。
$Summary = @{
Computers=$ADServerCount.count
DMZ=$TotalDMZ.count
No_Ping=$TotalNoPing.count
Reg_Failed=$TotalRegFailed.count
RebootPending=$TotalPendingReboot.count
RebootNotRequired=$TotalNoPatchRequired.count
}
$ExecSummary = [PSCustomObject]$Summary | Convertto-HTML -fragment
$GroupPendingRebootbyOwner = $AllTeamsFilter | Select Computer, RebootPending, Owner | Where {$_.Rebootpending -match 'True'} |
Select Computer, Owner | Group Owner | Sort Count -desc | Select Name, Count | Convertto-HTML -fragment
$OlderThan30Days = $AllTeamsFilter | Select Computer, RebootPending, Owner, DaysAgo |
Where {$_.RebootPending -match 'True' -and $_.DaysAgo -notmatch 'No_Ping' -and $_.DaysAgo -notmatch 'DMZ' -and $_.DaysAgo -notmatch 'Reg_Failed' -and $_.DaysAgo -gt '31'} |
Select Computer, Owner, DaysAgo | Sort DaysAgo -desc | Convertto-HTML -fragment
$Mailto = "emailaddress"
$EmailFrom = "emailaddress"
$SMTPServer = "smtpserver"
$HTMLmessage = @"
<font color=""black"" face=""Arial"" size=""3"">
<h1 style='font-family:arial;'><b>Windows Updates and Pending Reboot Report</b></h1>
<style type=""text/css"">body{font: .8em ""Lucida Grande"", Tahoma, Arial, Helvetica, sans-serif;}
ol{margin:0 auto;}
table{width:auto;}
thead{}
thead th{font-size:120%;text-align:left;}
th{border-bottom:2px solid rgb(79,129,189);border-top:2px solid rgb(79,129,189);padding-bottom:10px;padding-top:10px;}
tr{padding:10px 10px 10px 10px;border:none;}
#middle{background-color:#900;}
</style>
<body BGCOLOR=""white"">
<p style='font: ""Lucida Grande"", Tahoma, Arial, Helvetica, sans-serif;'><b>Executive Summary</b><br>
$ExecSummary
<p style='font: ""Lucida Grande"", Tahoma, Arial, Helvetica, sans-serif;'><b>Pending Reboots by owner ("blank" name = unassigned owner)</b><br>
$GroupPendingRebootbyOwner
<p style='font: ""Lucida Grande"", Tahoma, Arial, Helvetica, sans-serif;'><b>Last rebooted more than 30 days ago</b><br>
$OlderThan30Days
</body>
"@
Run Code Online (Sandbox Code Playgroud)
小智 7
我认为对于以 HTML 形式查看哈希表,这值得更多的答案。如果您想获取一个哈希表,并将其放入 HTML 以用于电子邮件或其他任何内容,您需要枚举每个条目的键和值。我相信这个建议只适用于 powershell V3 及更高版本,但我可能是错的。因此:
PS > @{a=2;b=3;}
Name Value
---- -----
a 2
b 3
Run Code Online (Sandbox Code Playgroud)
也可以看成:
PS > (@{a=2;b=3;}).GetEnumerator()
Name Value
---- -----
a 2
b 3
Run Code Online (Sandbox Code Playgroud)
然后可以通过以下方式进行转换(您可能不需要片段,但我经常从 powershell 在 HTML 中使用它):
PS > (@{a=2;b=3;}).GetEnumerator()| select Key,Value | ConvertTo-Html -Fragment
<table>
<colgroup><col/><col/></colgroup>
<tr><th>Key</th><th>Value</th></tr>
<tr><td>a</td><td>2</td></tr>
<tr><td>b</td><td>3</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)
在PowerShell 2.0中,[PSCustomObject]$Hashtable语法不起作用。
将New-Objectcmdlet与-Property参数一起使用:
New-Object psobject -Property $Summary |ConvertTo-Html -Fragment
Run Code Online (Sandbox Code Playgroud)