Windows PowerShell:PowerShell 中的 HTML 报告

08/17/2016

本文内容

事实上,您可以使用 Microsoft Windows PowerShell Cmdlet 来生成 HTML 报告,并与同事共享。

Don Jones

在 Windows PowerShell 的众多功能中,其内置功能可以从它的各种 Cmdlet 中生成 HTML 输出。简单地将 Cmdlet 输出传输到 ConvertTo-HTML,并将该输出传输到 Out-File,就可以将其放入文件中。例如,

Get-WmiObject –Class Win32_Service |

Select-Object –property Name,State |

Where-Object –Filter { $_.StartMode –eq 'Auto' –and $_.State –ne 'Running' } |

ConvertTo-HTML |

Out-File BadNews.html

您将得到一个服务列表,其中包含本应运行但并未运行的服务。这就是您可能要写入 Intranet 文件服务器,并让支持人员每天早晨检查的内容。此外,当您输入所有这些内容时,前四行应以管道字符 (|) 结尾。最后一行以回车符结尾。

如果您以交互方式将其输入到 Shell 中,请注意在完成第一行输入并回车后,提示符将变为“>>”。没问题。这意味着 Windows PowerShell 已经准备好让您输入下一行。在输入第四行和最后一行之后,请按两次 Enter 键来告知 Shell 您已经完成输入,并希望其执行该命令。

有关 ConvertTo-HTML Cmdlet 的一个问题是:根据其设计,它每次只能处理一种类型的输出。如果您尝试向它提供多种对象类型 - 服务、流程或事件日志项 - 它就不能正确地格式化输出。

如果您想创建某种合并报告,诀窍就是使用 Cmdlet 的不同参数。例如,假设您想要生成一份包含前面提到的“应该运行但并未运行的服务”的报告,您还希望该页列出最近 100 个安全事件日志项、服务器正在运行的所有进程以及有关服务器本身的一些基本信息。

您需要知道两件事:首先是 ConvertTo-HTML 的 -Fragment 参数(可以在其帮助文件中找到),其次是 Cmdlet 并没有将 HTML 写入文件的事实。

就像在第一个示例中,Cmdlet 将 HTML 放入管道 - 将其放入文件中是一个单独的步骤。第一个示例看起来比较繁琐,但它将给予我们执行这些操作的能力:

$one = Get-WmiObject -class Win32_Service |

Select-Object -property Name,State |

Where-Object -filter { $_.Mode -eq 'Auto' -and $_.State -ne 'Running' } |

ConvertTo-HTML -Fragment

$two = Get-EventLog -LogName Security -newest 100 |

ConvertTo-HTML -Fragment

$three = Get-Process |

ConvertTo-HTML -Fragment

$four = Get-WmiObject -class Win32_OperatingSystem |

Select-Object -property Caption,BuildNumber,ServicePackMajorVersion,

@{n='LastBootTime';e={$_.ConvertToDateTime($_.LastBootUpTime)}} |

ConvertTo-HTML -Fragment

ConvertTo-HTML -Body "$one $two $three $four" -Title "Server Status" |

Out-File c:\status.html

在输入这些内容时,每行都应该以管道符号结尾,但最后一行应该以回车符结尾。 这会运行四个截然不同的命令,每个命令将检索信息的一个特定片段,并将其转换为 HTML 片段。

HTML 片段是一个 HTML 长字符串,它不含可以构成完整页面的标头标记。在最后一个步骤中,我简单地将 HTML 并入一个完整页面的正文中,并将其输出至一个文件中。

尝试运行它,看看您的想法会是什么样子。它非常简单。有一个笑话说,Windows PowerShell 是唯一能够输出“干净”的、不添加任何样式和格式的 HTML 的 Microsoft 产品。弊端就是“干净”的 HTML 非常乏味。这正是目的。您应该使用一个单独的 CSS 文件使其变得更吸引人。

在 HTML 中,您首先要对 HTML

标记应用格式。这些标记包含表格的各个行。 标记包含表格的列标题。 标记为整个页面提供默认格式。创建一个名为 C:\Style.css 的文本文件并输入以下内容:

body {

font-family:Calibri;

font-size:10pt;

}

th {

background-color:black;

color:white;

}

td {

background-color:#666;

color:black;

}

Now, I’ll simply modify my lastConvertTo-HTML command as follows:

ConvertTo-HTML -Body "$one $two $three $four" -Title "Server Status" -CssUri c:\style.css |

Out-File c:\status.html

应输入两行文本,第一行同样要以管道符号结尾。尝试运行全部:您将发现一个格式更好的输出。遗憾的是,CSS 没有提供应用交替表格行风格的方式,至少没有适合 Windows PowerShell 生成 HTML 输出的方式。

您可以使用 ConvertTo-HTML 的 -PreContent 参数和 -PostContent 参数来添加节标题和其他任何文本。这有助于使报告变得更容易阅读。它将在表格之前显示任何传递给 -PreContent 的字符串。传递给 -PostContent 的文本将显示在表格之后。您可以通过在 Shell 中运行 Help ConvertTo-HTML

-example 来找到有关这些操作的示例。

这是一个关于如何使用 Microsoft Windows PowerShell 来生成帮助性报告,并与同事共享的极好示例。创建样式适当的 HTML 输出并不需要大量的额外工作。将这些页面保存到 Intranet 文件服务器上,您的同事、经理和那些可能需要的人就能访问这些页面。

Don Jones 是 Microsoft MVP 奖获得者,也是《Learn Windows PowerShell in a Month of Lunches》(Manning Publications Co.,2010)一书的作者,这本书可以帮助所有管理员高效地使用 Windows PowerShell。此外,Jones 还提供公开和现场 Windows PowerShell 培训。您可以通过他的网站 ConcentratedTech.com 与他联系。

相关内容

powershell提取html字段,Windows PowerShell:PowerShell 中的 HTML 报告相关推荐

  1. powershell提取html字段,使用PowerShell或VBS从HTML文件中提取表

    Keith Hill.. 5 我用PowerShell做过这种事情.这很简单: PS> $url = "http://www.windowsitpro.com/news/PaulThu ...

  2. powershell提取html字段,有选择地格式化PowerShell管道中的数据并以HTML格式输出的技术...

    更快的方式: 好吧,我一直向自己承诺,我不会再把时间花在已解决的问题上了,但是...我的第二个答案中的switch语句在我的系统上运行需要10秒以上 - 因为它正在做"哪里"的东西 ...

  3. linux远程开机windows,从Linux到Windows的PowerShell远程处理

    原标题:从Linux到Windows的PowerShell远程处理 前提条件 1)后期利用期间可以通过目标NTLM身份验证 2)重启WinRM服务 3)使用此NTLM支持PowerShell Dock ...

  4. Windows azure国际版下通过 windows auzre powershell为VM分配绑定virtual ip address

    说到windows azure,相信大家已经对此产品已经相当熟悉了,但使用的版本最多的应该是windows azure国内版本,也就是说,是微软委派世纪互联提供服务的平台,登陆地址为:https:// ...

  5. windows 7 PowerShell 笔记

    转自:http://lovephoenix.javaeye.com/blog/661380 对 powershell 做下总结 启动 powershell #字符串操作 对象操作 "hell ...

  6. powershell快捷键_借助Windows Terminal搞一个花里胡哨的PowerShell终端

    一提起PowerShell,命令提示符等等,想到的就是丑.难用,非常丑! 各位可以先感受一下. 不过,现在我们可以对它做一个美化,美化后的效果如下,各位也可以感受下(本人不提供背景图) 下面做简单记录 ...

  7. powershell 使用_使用PowerShell提取Azure成本

    powershell 使用 With strong organization and design for our development teams, cloud infrastructure an ...

  8. Windows Terminal PowerShell 7 美化

    记录一下有关Windows Terminal的折腾记录. 一.最后的成果图 二.Windows Terminal & PowerShell安装 1.Windows Store 直接搜索进行下载 ...

  9. shell win10 改成cmd_Win10 的 PowerShell、CMD 和 Windows Terminal 全方位美化配置方法

    说明:# 原创 # 标签为 IT 之家在 IT 圈所设的投稿栏目,具体投稿规则点此查看. 其实网上的教程已经很多,但还是分享我自己亲测出来的吧 众所周知,Windows 10 自带的 PowerShe ...

最新文章

  1. Github在windows7环境下使用入门
  2. 百度陆奇最新内部演讲:人工智能时代,给工程师的5个建议
  3. P1463-[POI2002][HAOI2007]反素数【约数,数论】
  4. c语言 行程长度编码,C语言编程题,求大佬帮助,关于数组的。
  5. python判断是相邻数字,检查Python中相邻数字的绝对差之和是否为素数
  6. 物联网时代,隐私还有救吗?
  7. 贝叶斯思维 统计建模的Python学习法
  8. python与排版设计_python 排版
  9. 【转】概要设计文档编写规范
  10. python绘图练习
  11. 手机文件上传ftp服务器,安卓手机文件上传 ftp服务器
  12. AES256加解密java语言实现
  13. CNN Explainer
  14. CS231n assignment1 KNN部分用到的函数
  15. H5 vue单页面 活体检测
  16. Supervisor启动java服务(jar)
  17. 安装golang出现 Hey! The program ‘go‘ is currently not installed. You can install it by typing...
  18. 西电计算机学院崔江涛,“师德标兵”崔江涛:人才培养的研究者与实践者
  19. Java开发校招面试考点汇总
  20. 数字化转型避无可避,PCB行业如何借力采购管理平台“乘风破浪”

热门文章

  1. [Intellij] 软件设置和常用快捷键
  2. 全方面了解和学习PHP框架 PHP培训教程
  3. Android中Activity的四种启动方式
  4. 咨微关于企业信息门户的设想
  5. Prism4文档翻译(第四章 第一部分) 转载bluesky234
  6. Ubuntu自带pdf查看器不能显示中文解决问题
  7. NBear.Mapping使用教程(3):第一个简单例子
  8. TCP/IP总结(1)分层
  9. C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板特例化
  10. Hyperledger Fabric 三种node节点 (1) 基本概念