首页> 系统技术> 【Powershell】—美化你的报表

[文章]【Powershell】—美化你的报表

收藏
0 1606 0

【摘要】

PowerShell(包括Windows PowerShell and PowerShell Core)是微软公司开发的任务自动化和组件管理框架,由.NET Framework.NET Core构建的命令行外壳界面相关脚本语言组成,最初仅Windows组件,后于2016818日开源并跨平台支持。

【正文】

一、     什么是Powershell报表

报表就是Powershell脚本运行完之后的结果呈现方式,报表的形式可以有很多,比如csv文件,txt文本,以及html文件等等,而如果论可定制化的程度来说,html文件应该是第一首选。

1.     确定核心代码

        1)      先确认好Powershell的核心代码,即我们需要用Powershell来做什么,这里的例子是收集服务器当前的性能,如CPU使用率,内存使用率和磁盘读写I/O


        2)      运行完之后,我们可以确定Powershell返回的结果为我们想要的,这样子核心代码就已经定下来,接下来就是对结果的展示进行美化。


二、     引入HTML标签

1.     使用表格

遇到上面的这种输出结果,最容易想到的就是使用表格来进行展示。在Html中,表格为标签为<table></table>,这样我们就可以先把Html结构的一部分给定下来,<tr></tr>为表格的行,<td></td>为表格的单元格。


以上的结构就等同于以下的表格:

服务器

CPU使用率

内存使用率

磁盘写入速度

磁盘读取速度

 

2.     把结果值进行插入

 1)      结构定下了之后,就可以利用foreach循环来把结果值给插入,到最后记得要把"</Table></BODY></HTML>" 插入,这样就构成了一个完整的HTML文件的格式

        

        2)      然后就可以通过PowershellOut-File命令把所有的结果都输出成一个html文件。

                

        3)      那么最后得到的html文件内容就如下:

    

                     

三、     引入CSS样式

1.     内联CSS样式表

1)         既然是HTML文件,那么我们就可以通过CSS样式来进行优化我们的表格,以下是加了CSS样式之后的网页代码。

2.   $Outputreport  = @’

3.   <!DOCTYPE html>

4.   <html lang="en">

5.   <head>

6.   <title>Simple Table</title>

7.   <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>

8.   <script type="text/javascript">

9.    $(function() {

10.         $("table tr:nth-child(odd)").addClass("odd-row");

11.        $("table td:first-child, table th:first-child").addClass("first");

12.        $("table td:last-child, table th:last-child").addClass("last");

13. });

14. </script>

15. <style type="text/css">

16.     html, body, div, span, object, iframe,

17.     h1, h2, h3, h4, h5, h6, p, blockquote, pre,

18.     abbr, address, cite, code,

19.     del, dfn, em, img, ins, kbd, q, samp,

20.     small, strong, sub, sup, var,

21.     b, i,

22.     dl, dt, dd, ol, ul, li,

23.     fieldset, form, label, legend,

24.     table, caption, tbody, tfoot, thead, tr, th, td {margin:0;padding:0;

25.        border:0;

26.        outline:0;

27.        font-size:100%;

28.        vertical-align:baseline;

29.        background:transparent;

30.     }  

31.     body {

32.        margin:0;

33.        padding:0;

34.        font:12px/15px "Helvetica Neue",Arial, Helvetica, sans-serif;

35.        color: #555;

36.        background:#f5f5f5 url(bg.jpg);

37.     }

38.     a {color:#666;}

39.     table {

40.        overflow:hidden;

41.        border:2px solid #d3d3d3;

42.        background:#fefefe;

43.        width:auto;

44.        margin: 0 10px 0 30px;

45.        -moz-border-radius:5px;

46.        -webkit-border-radius:5px;

47.        border-radius:10px; /* À¨ª?2?¨º */

48.        -moz-box-shadow: 0 0 4px rgba(0, 0, 0, 0.2);

49.        -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);

50.     }

51.     td {

52.        padding:5px;

53.        text-align:center;

54.        word-wrap: break-word;

55.     }

56.     th {

57.        padding-top:22px;

58.        padding-left: 10px;

59.        padding-right: 10px;

60.        text-shadow: 1px 1px 1px #fff;

61.        background:#e8eaeb;

62.        border-right: 1px solid #ffffff;

63.        }

64.     td {

65.        border-top:1px solid #e0e0e0;

66.        border-right:1px solid #e0e0e0;

67.        }

68.     tr.odd-row td {background:#f6f6f6;}

69.     td.first, th.first {text-align:left}

70.     td.last {border-right:none;}

71.     td {

72.        background: -moz-linear-gradient(100% 25% 90deg, #fefefe, #f9f9f9);

73.        background: -webkit-gradient(linear, 0% 0%, 0% 25%, from(#f9f9f9), to(#fefefe));

74.     }

75.     tr.odd-row td {

76.        background: -moz-linear-gradient(100% 25% 90deg, #f6f6f6, #f1f1f1);

77.        background: -webkit-gradient(linear, 0% 0%, 0% 25%, from(#f1f1f1), to(#f6f6f6));

78.     }

79.     th {

80.        background: -moz-linear-gradient(100% 20% 90deg, #e8eaeb, #ededed);

81.        background: -webkit-gradient(linear, 0% 0%, 0% 20%, from(#ededed), to(#e8eaeb));

82.     }

83.     tr:first-child th.first {

84.        -moz-border-radius-topleft:5px;

85.        -webkit-border-top-left-radius:5px;

86.     }

87.     tr:first-child th.last {

88.        -moz-border-radius-topright:5px;

89.        -webkit-border-top-right-radius:5px;

90.      }

91.     tr:last-child td.first {

92.        -moz-border-radius-bottomleft:5px;

93.        -webkit-border-bottom-left-radius:5px;

94.     }

95.     tr:last-child td.last {

96.        -moz-border-radius-bottomright:5px;

97.        -webkit-border-bottom-right-radius:5px;

98.     }

99.     .title {

100.             padding:40px 0 15px 20px;

101.             text-shadow:1px 1px 0px rgb(141, 134, 134);

102.          }

103.          content-left {floatêoleft}

104.          content-right {floatêoright}

105.      </style>

106.       

107.       

108.      </head>

109.      <body>

110.       

111.      <div id="content">

112.          <div class = "title">

113.             <font size="15">服务器性能</font>

114.          </div>

115.          <div>

116.             <table cellspacing="0">

117.                 <tr>

118.                      <td>序列</td>

119.                      <td>服务器名</td>

120.                    <td>CPU使用率(%)</td>

121.                      <td>内存使用率(%)</td>

122.                      <td>磁盘读取</td>

123.                      <td>磁盘写入</td>

124.                 </tr>

125.      '@

 

2)         然后依然是通过foreach循环进行插入结果值。

    

 

3)         同时也可以根据实际的需求,再进行添加表,如,CPU使用率前5台服务器:

    

 

4)         这样子输出为Html之后就如下,相比于第一次的输出,这样子的html报表相对来说就更加的美观。

                     

四、     CSS样式从何来

CSS样式不需要自己手动一个个去写,需要的时候直接在网上找现成的,然后进行替换就可以。下图就是我直接把样式替换成另外一种的输出结果:

                 



原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。 

原文链接:
学领未来


欢迎关注【学领未来公众号】

 

系统技术
最近热帖
{{item.Title}} {{item.ViewCount}}
近期热议
{{item.Title}} {{item.PostCount}}