#将需要读取的域名和端口列表保存在名为ports01.txt、ports02的文件中,文件与脚本位于相同目录下
$CurrentPath = $MyInvocation.MyCommand.Path.substring(0,$MyInvocation.MyCommand.Path.LastIndexOf('\')+1)
$file = "ports01.txt"
$FilePath = $CurrentPath + $file

$Infors = Get-Content $FilePath
$Temp_PortStatushtm = "C:\Windows\Temp\PortStatushtm.htm"

If (Test-Path $Temp_PortStatushtm)
{Remove-Item $Temp_PortStatushtm}

$Domainname = $Infors[0].Split(",")[0]
#将域名解析为IP,因为可能会解析出多个IP,此处只取第一个IP
$IP = [System.Net.Dns]::GetHostAddresses($Domainname)[0]
Start-Sleep -Milliseconds 500
#判断IP是否格式正确
$Address = [System.Net.IPAddress]::Parse($IP)
$IPstring = $Address.IPAddressToString

#端口连通性测试函数
Function Port-Test ($Address,$Port)
{
$Timeout = 1000
$Socket = New-Object System.Net.Sockets.TCPClient
$Connect = $Socket.BeginConnect($Address,$Port,$null,$null)
Start-Sleep -Milliseconds 500
If ( $Connect.IsCompleted )
{
$Wait = $Connect.AsyncWaitHandle.WaitOne($TimeOut,$false)
If(!$Wait)
{
$Socket.Close()
Return $false
}
Else{
$Socket.EndConnect($Connect)
$Socket.Close()
Return $true
}
}
Else{Return $false}

}

$Server = $Domainname + " : " + $IPstring
#将结果临时保存到名为csv的hash表中,便于html格式的输出
$csv=@()
Foreach ($infor in $Infors)
{
$port = $Infor.Split(",")[1]
$Status= Port-Test $Address $port
$content=""|select Port,Status
$content.Port = $port
$content.Status = $status
$csv += $content
}

#输出HTML格式:
#-head:控制整体样式
#{$_ -replace "<table>","<table align=center>"}:表格居中显示
#$_ -replace "<td>","<td bgcolor=cyan>"}:改变表格列背景颜色
$csv|Select Port,Status | ConvertTo-Html `
-head '<style type="text/css"> body,table,td,th {font-family:Tahoma; color:Black; Font-Size:20pt} body {text-align:center} th {font-weight:bold}</style>' `
-Title "Port Monitor" `
-Body "<H4>$server</H4>" | `
ForEach{$_ -replace "<table>","<table align=center>"} |`
ForEach{$_ -replace "<td>","<td bgcolor=cyan>"} | `
Foreach{
If($_ -like "*false</td>*")
{$_ -replace "<td bgcolor=cyan>false","<td bgcolor=red>False"}
#Elseif($_ -like "*true</td>*")
# {$_ -replace "<td bgcolor=cyan>true","<td bgcolor=green>True"}
Else{$_}
} >>$Temp_PortStatushtm

#Invoke-Item $Temp_PortStatushtm
##############################################################################

$file = "ports02.txt"
$FilePath = $CurrentPath + $file

$Infors = Get-Content $FilePath
$Temp_PortStatushtm = "C:\Windows\Temp\PortStatushtm.htm"

$Domainname = $Infors[0].Split(",")[0]
$IP = [System.Net.Dns]::GetHostAddresses($Domainname)[0]
Start-Sleep -Milliseconds 500
$Address = [System.Net.IPAddress]::Parse($IP)
$IPstring = $Address.IPAddressToString

$t = " √ "
$f = " × "
Function Port-Test ($Address,$Port)
{
$Timeout = 1000
$Socket = New-Object System.Net.Sockets.TCPClient
$Connect = $Socket.BeginConnect($Address,$Port,$null,$null)
Start-Sleep -Milliseconds 500
If ( $Connect.IsCompleted )
{
$Wait = $Connect.AsyncWaitHandle.WaitOne($TimeOut,$false)
If(!$Wait)
{
$Socket.Close()
Return $false
}
Else{
$Socket.EndConnect($Connect)
$Socket.Close()
Return $true
}
}
Else{Return $false}

}

$Server = $Domainname + " : " + $IPstring
$csv=@()
Foreach ($infor in $Infors)
{
$port = $Infor.Split(",")[1]
$Status= Port-Test $Address $port
$content=""|select Port,Status
$content.Port = $port
$content.Status = $status
$csv += $content
}
$csv|Select Port,Status | ConvertTo-Html `
-head '<style type="text/css"> body,table,td,th {font-family:Tahoma; color:Black; Font-Size:20pt} body {text-align:center} th {font-weight:bold}</style>' `
-Title "Port Monitor" `
-Body "<H4>$server</H4>" | `
ForEach{$_ -replace "<table>","<table align=center>"} |`
ForEach{$_ -replace "<td>","<td bgcolor=cyan>"} | `
Foreach{
If($_ -like "*false</td>*")
{$_ -replace "<td bgcolor=cyan>false","<td bgcolor=red>False"}
Else{$_}
} >>$Temp_PortStatushtm

#打开html输出结果
Invoke-Item $Temp_PortStatushtm

参考:http://www.pstips.net/creating-colorful-html-reports.html

====================================

导出html格式文件:

Get-Website|Select @{Label="Sitename";Expression={$_.Name}}, @{Label="Logdir";Expression={"W3SVC" + $_.id}} |sort Sitename |ConvertTo-Html |out-file d:\iislog\Readme.htm -Force

导出html格式文件,包含超链接:

Add-Type -AssemblyName System.Web
$ip = (gwmi Win32_NetworkAdapterConfiguration -Filter "IPEnabled='true'" | ? {$_.DefaultIPGateway -ne $null}).IPAddress[0]
$html = Get-Website|Select @{Label="Website";Expression={$_.Name}}, @{Label="Website Log";Expression={'<a href="http://' + $ip + ":11000/W3SVC" + $_.id + '">' + "http://" + $ip + ":11000/W3SVC" + $_.id + '</a>'}} |sort Website |ConvertTo-Html
$html = $html | % { if($_ -match 'a href' ) { [System.Web.HttpUtility]::HtmlDecode($_) } else { $_ } }
$html |out-file d:\iislog\Readme.htm -Force

HTML输出 一 控制列背景颜色的更多相关文章

  1. HTML输出 二 控制行背景颜色

    $Infors = Get-Content ports01.txt$Temp_PortStatustxt = "C:\Windows\Temp\PortStatustxt.txt" ...

  2. VC编程中如何设置对话框的背景颜色和静态文本颜色

    晚上编一个小程序,涉及到如何设置对话框的背景颜色和静态文本颜色.这在VC6.0中本来是一句话就搞定的事.在应用程序类中的InitInstance()函数添加: //设置对话框背景和文本颜色 SetDi ...

  3. 第十三篇-通过Button设置文本背景颜色

    MainActivity.java package com.example.aimee.buttontest; import android.annotation.SuppressLint; impo ...

  4. [转]如何在Windows 10中更改文件夹背景颜色

    ini文件.我们甚至可以使用相同的技术将图片设置为文件夹背景. 已有工具可以更改Windows 7中Windows资源管理器背景的颜色,并将图像设置为Windows 7中的文件夹背景,但这些工具与Wi ...

  5. []如何在Windows 10中更改文件夹背景颜色

    ini文件.我们甚至可以使用相同的技术将图片设置为文件夹背景. 已有工具可以更改Windows 7中Windows资源管理器背景的颜色,并将图像设置为Windows 7中的文件夹背景,但这些工具与Wi ...

  6. qt tableview列头背景颜色设置

    设置表列头背景颜色 QHeaderView::section { background: rgb(255, 255, 127); }

  7. Silverlight DataGrid数据行背景颜色控制

    sdk:DataGrid数据绑定后,部分特殊的行需要用不同的背景颜色来显示.(注册DataGrid的LoadingRow事件) private void radGridView_LoadingRow( ...

  8. ext js 4.0 grid表格根据列值的不同给行设置不同的背景颜色

    Code: Ext.create('Ext.grid.Panel', { ... viewConfig: { getRowClass: function(record) { return record ...

  9. linux BASH shell设置字体与背景颜色

    linux BASH shell下设置字体及背景颜色的方法. BASH shell下设置字体及背景颜色  echo -e "\e[31mtest\e[41m"  \e[30m 将字 ...

随机推荐

  1. Nginx - 指定log_format,常用于 Awstats 分析

    1. vim /etc/nginx/nginx.conf (下面格式, Awstats 使用) log_format new_log '$remote_addr - $remote_user [$ti ...

  2. Java [Leetcode 228]Summary Ranges

    题目描述: Given a sorted integer array without duplicates, return the summary of its ranges. For example ...

  3. 【C#学习笔记】窗口隐藏、最小化、最大化、正常化

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  4. 【转】超全!整理常用的iOS第三方资源 -- 不错

    原文网址:http://www.cocoachina.com/ios/20160121/14988.html 一:第三方插件 1:基于响应式编程思想的oc 地址:https://github.com/ ...

  5. JavaEE参考示例 SpringSide 4.0 GA版杀青

    SpringSide是以Spring Framework为核心的,Pragmatic风格的JavaEE应用参考示例,是JavaEE世界中的主流技术选型,较佳实践的总结与演示. 经过漫长的7个月和6个R ...

  6. POJ 2136 Vertical Histogram

    题意:按样例那样模拟…… 解法:模拟…… 代码: #include<stdio.h> #include<iostream> #include<algorithm> ...

  7. Storm入门教程 第二章 构建Topology[转]

    2.1 Storm基本概念 在运行一个Storm任务之前,需要了解一些概念: Topologies Streams Spouts Bolts Stream groupings Reliability ...

  8. 《Python核心编程》 第十章 错误和异常

    10–1. 引发异常. 以下的哪个因素会在程序执行时引发异常? 注意这里我们问的并不是异常的原因. a) 用户 b) 解释器 c) 程序 d) 以上所有 e) 只有 b) 和 c) f) 只有 a) ...

  9. 一幅图概括Android测试的方方面面

    一幅图概括Android测试的方方面面,来自网络: 另外的一些测试技巧 1,测试应用程序时,环境是很大的一个影响因素:系统时间,网络情况,异常关闭等 2,测试应用程序时,第三方嵌入程序也是有影响的.如 ...

  10. Fitnesse启动参数与配置

    Fitnesse最新版20140630默认启动后,网页风格与 fitnesse.org 的Bootstrap风格完全不一致. 需要配置plugins.properties中的Theme=bootstr ...