PowerShell
  
<# 
###################################################################################################################################### 
#===================================== 
# Get-DiskSpace-Servers-WebHTML.ps1 
# Bousquet Christian 
# V2.0 
# 2 File .js must have present 
# ===> jsjquery.min.js 
# ===> animatedcollapse.js 
#====================================== 
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
# This Script will make Report HTML with JavaScript Expand and collapse all servers 
# Disk Space Type = 3  
# All Label 
# Disk ID 
# Total Space 
# Free Space and Percent 
# Used Space and Percent 
# -------------------------------------------------- 
# STEP 0 ==> PATH JAVASCRIPT ( Put the path for JS) 
# Step 1 ==> CMLDLETS ACTION ( enter your info for run script ) 
# STEP 2 ==> Optionnal Information ( this information to modify the script to impact directly) 
# -------------------------------------------------- 
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
####################################################################################################################################### 
#> 
  
#============================================================================ 
# Step 0 ==> PATH JAVASCRIPT  
#============================================================================ 
$JavaScriptJquery                =    "c:\jquery.min.js" 
$JAvaScriptAnimatedCollapse        =    "c:\animatedcollapse.js" 
#============================================================================ 
# ENS Step 0 ==> PATH JAVASCRIPT 
#============================================================================ 
  
#################################################################################### 
  
#============================================================================ 
# Step 1 ==> CMLDLETS ACTION  
#============================================================================ 
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
# First lets create a text file, where we will later save the freedisk space info 
$date = ( get-date ).ToString('dd-MM-yyyy') 
  
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
# Name of your compagny 
$ClientEnterprise =    "Chrisme Corp Microsoft" 
  
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
# Where Save your Report ? 
$FileNameReportDisk = "c:\Disk_Space_Report-$date.html" #$env:TEMP +"\FreeSpace.htm" 
 
 
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
# Add Server From File Source or enum 
#$ListServer = "serv1","serv2","...." 
$ListServer = "dcdsmiami102","dcmiami101","exsucy05","dcds","server fail","dcdsmiami102.chrisme.labs","exsucy05.chrisme.labs" 
#$ListServer = Get-Content "C:\PowerShell-Server\Scripts\ListServer.log" 
 
  
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
# Edit the title of Web Page 
$TitleHtml = "CheckDisk MAIMI- $date" 
  
 
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
$DescriptionGeneral    =    "ZONE MIAMI" 
 
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
#--------- MAIL REPORT-------- 
$From     =    "Disk-Report@chrisme.fr"  
$To        =    "EnginerIISX1@chrisme.fr" 
$Subject=    "Disk Space Report - $date" 
$Smtp     =    "exsucy05" 
$FileAttach =    $freeSpaceFileName 
#--------- MAIL REPORT-------- 
 
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
#--------- ALERT MAIL REPORT (Critical)-------- 
$ToCritical         =    "EnginerIISX1@chrisme.fr" 
$subjectCritical     =    "Alerte Low"  
#--------- MAIL REPORT-------- 
 
#============================================================================ 
#  END Step 1 ==> CMLDLETS ACTION  
#============================================================================ 
  
  
  
#============================================================================ 
# STEP 2 ==> Optionnal Information 
#============================================================================ 
#Optionnal Advertisment 
$warning = 35 
$critical = 20 
  
#Date info HTML 
$date = ( get-date ).ToString('dd/MM/yyyy'$dateorigin = Get-Date 
  
# Count Server For HTML 
$CountServer = $PathServer.count  
#============================================================================ 
# End STEP 2 ==> Optionnal Information 
#============================================================================ 
  
#################################################################################### 
#################################################################################### 
  
#================================ 
# FUNCTIONS CATEGORIE 
#================================ 
  
# ************************* 
# Function Uptime 
# ************************* 
function Get-Uptime  
{ 
      param([string]$server) 
      Begin { 
           function Uptime { 
                param([string]$srv) 
                $os = Get-WmiObject Win32_OperatingSystem -ComputerName $srv 
                $uptime = $os.LastBootUpTime 
                return $uptime 
           }  
           function ConvertDate { 
                 param([string]$date) 
                $year = $date.substring(0,4) 
                $Month = $date.Substring(4,2) 
                $Day = $date.Substring(6,2) 
                $hour = $date.Substring(8,2) 
                $min = $date.Substring(10,2) 
                $sec = $date.Substring(12,2) 
                $RebootTime = new-Object System.DateTime($year,$month,$day,$hour,$min,$sec) 
                $now = [System.DateTime]::Now 
                $uptime = $now.Subtract($RebootTime) 
               
    $report = "Allumé depuis ==>: $($uptime.days)jours,$($uptime.Hours)Heures,$($uptime.Minutes)Minutes,$($uptime.seconds)Secondes" 
             $report 
   }  
  
                       $result = uptime $server 
                        #Write-Host "Uptime for Server [" -NoNewline 
                        #Write-Host $server -NoNewline -foregroundcolor Cyan 
                        #Write-Host "]" 
                        ConvertDate $result 
                        #Write-Host 
               } 
               #Write-Host 
} 
# ************************* 
# END Function Uptime 
# ************************* 
  
# ****************************** 
# Function DEscription Server 
# ******************************    
function Get-DescriptionServer 
{ 
    param([string]$server)    
 (gwmi -class win32_operatingsystem -ComputerName $Server).description 
}    
# ****************************** 
# END Function DEscription Server 
# ****************************** 
  
 
#================================ 
# END FUNCTIONS CATEGORIE 
#================================ 
  
  
  
#================================ 
# CATEGORIES HTML 
#================================ 
  
New-Item -ItemType file $FileNameReportDisk -Force 
  
# Function to write the HTML Header to the file 
Function writeHtmlHeader 
  
{ 
  
param($FileNameReportDisk) 
  
  
  
Add-Content $FileNameReportDisk "<html>" 
Add-Content $FileNameReportDisk "<head>" 
Add-Content $FileNameReportDisk "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>" 
  
#************************************************************* 
# Title HTML 
#************************************************************* 
Add-Content $FileNameReportDisk "<title>$TitleHtml</title>" 
#************************************************************* 
# End Title HTML 
#************************************************************* 
  
 
#============================================================= 
# Start Write Put JAVASCRIPT 
#============================================================= 
Add-Content $FileNameReportDisk "<script type='text/javascript'>" 
$readjquery    = get-content $JavaScriptJquery 
Add-Content $FileNameReportDisk $readjquery 
  
Add-Content $FileNameReportDisk "</script>" 
  
Add-Content $FileNameReportDisk "<script type='text/javascript'>" 
$readcollapse    = Get-Content $JAvaScriptAnimatedCollapse 
Add-Content $FileNameReportDisk $readcollapse  
Add-Content $FileNameReportDisk "</script>" 
#============================================================= 
# End Write Put JAVASCRIPT 
#============================================================= 
  
#============================================================= 
# Start JAvascript Animated 
# This functionn Add each <div> for all table need Expand or Collapse 
#============================================================= 
Add-Content $FileNameReportDisk "<script type='text/javascript'>" 
  
 $ToggleID = 0 
 foreach ($ServerName in $ListServer) 
 { 
 Add-Content $FileNameReportDisk "animatedcollapse.addDiv('toggle$ToggleID', 'fade=1')" 
 $ToggleID++ 
 } 
#============================================================= 
# End Java Script Animated  
#============================================================= 
  
 
Add-Content $FileNameReportDisk "animatedcollapse.ontoggle=function($, divobj, state){ //fires each time a DIV is expanded/contracted" 
Add-Content $FileNameReportDisk "//$: Access to jQuery" 
Add-Content $FileNameReportDisk "//divobj: DOM reference to DIV being expanded/ collapsed. Use divobj.id to get its ID" 
Add-Content $FileNameReportDisk "//state: block or none, depending on state" 
Add-Content $FileNameReportDisk "}" 
Add-Content $FileNameReportDisk "animatedcollapse.init()" 
Add-Content $FileNameReportDisk "</script>" 
add-content $FileNameReportDisk "<STYLE TYPE='text/css'>" 
add-content $FileNameReportDisk  "<!--" 
add-content $FileNameReportDisk "table {" 
add-content $FileNameReportDisk  "border: medium solid #CCCCCC;" 
add-content $FileNameReportDisk  "border-collapse: collapse;" 
add-content $FileNameReportDisk  "}" 
add-content $FileNameReportDisk  "th {" 
add-content $FileNameReportDisk  "padding: 5px;" 
add-content $FileNameReportDisk  "background-color: #71D2FF;" 
add-content $FileNameReportDisk  "}" 
add-content $FileNameReportDisk  "td " 
add-content $FileNameReportDisk  "{" 
add-content $FileNameReportDisk  "font-family: sans-serif;" 
add-content $FileNameReportDisk  "border: thin solid #6495ed;" 
add-content $FileNameReportDisk  "padding: 5px;" 
add-content $FileNameReportDisk  "text-align: center;" 
add-content $FileNameReportDisk  "}" 
add-content $FileNameReportDisk  ".heading0_expanded" 
add-content $FileNameReportDisk  "{" 
add-content $FileNameReportDisk  "BORDER-RIGHT: #bbbbbb 1px solid; PADDING-RIGHT: 5em; BORDER-TOP: #bbbbbb 1px solid; DISPLAY: block; PADDING-LEFT: 20px; FONT-WEIGHT: bold; FONT-SIZE: 16pt; MARGIN-BOTTOM: -1px; MARGIN-LEFT: 0px; BORDER-LEFT: #bbbbbb 1px solid; CURSOR: hand; COLOR: White; MARGIN-RIGHT: 0px;  FONT-FAMILY: Tahoma; POSITION: relative; HEIGHT: 1.25em; BACKGROUND-COLOR: #C22523" 
add-content $FileNameReportDisk  "}" 
add-content $FileNameReportDisk  "A.showhide" 
add-content $FileNameReportDisk  "{" 
add-content $FileNameReportDisk  "font-family:arial;" 
add-content $FileNameReportDisk  "font-size:11pt;" 
add-content $FileNameReportDisk  "font-style:bold;" 
add-content $FileNameReportDisk  "border: black solid 1px;" 
add-content $FileNameReportDisk  "background:lightgrey;" 
add-content $FileNameReportDisk  "color:black; text-decoration:none;" 
add-content $FileNameReportDisk  "}" 
add-content $FileNameReportDisk  ".buttonall" 
add-content $FileNameReportDisk  "{" 
add-content $FileNameReportDisk  "border: 2px solid white;" 
add-content $FileNameReportDisk  "width: 125px;" 
add-content $FileNameReportDisk  "font-size:10pt;" 
add-content $FileNameReportDisk  "font-familly:Tahoma;" 
add-content $FileNameReportDisk  "font-weight:bold;" 
add-content $FileNameReportDisk  "cursor:pointer;" 
add-content $FileNameReportDisk  "}" 
add-content $FileNameReportDisk  ".button" 
add-content $FileNameReportDisk  "{" 
add-content $FileNameReportDisk  "border: 1px solid white;" 
add-content $FileNameReportDisk  "background:transparent;" 
add-content $FileNameReportDisk  "font-weight:bold;" 
add-content $FileNameReportDisk  "font-family: Tahoma;" 
add-content $FileNameReportDisk  "font-size:14pt;" 
add-content $FileNameReportDisk  "color:blue;" 
add-content $FileNameReportDisk  "text-decoration:underline;" 
add-content $FileNameReportDisk  "cursor:pointer;" 
add-content $FileNameReportDisk  "}" 
add-content $FileNameReportDisk  "-->" 
add-content $FileNameReportDisk  "</style>" 
Add-Content $FileNameReportDisk "</head>" 
Add-Content $FileNameReportDisk "<body>" 
Add-Content $FileNameReportDisk "<p><b><font face='Arial' size='5'>" 
Add-Content $FileNameReportDisk "$TitleHtml<hr size='8' color='#CC0000'></font></b>" 
Add-Content $FileNameReportDisk "<font face='Arial' size='3'><b><i>$ClientEnterprise  $CountServer Servers</i></b></font><br>" 
Add-Content $FileNameReportDisk "<font face='Arial' size='2'>Report generated on $dateorigin" 
Add-Content $FileNameReportDisk "</font></p>" 
Add-Content $FileNameReportDisk "<DIV class=heading0_expanded>" 
  
#============================================================= 
# This Each for Zone and Server  / Javascript each DIV SHOW ALL / HIDE ALL 
#============================================================= 
Add-Content $FileNameReportDisk "<SPAN>$DescriptionGeneral &nbsp &nbsp &nbsp &nbsp<th width='20%'><input onClick=""javascript:animatedcollapse.show([" 
 $ToggleID = 0 
 foreach ($ServerName in $ListServer) 
 { 
 Add-Content $FileNameReportDisk "'toggle$ToggleID'," 
 $ToggleID++ 
 } 
Add-Content $FileNameReportDisk "])"" class='buttonall' type='button' value='Expand ALL'/>  <input onClick=""javascript:animatedcollapse.hide([" 
 $ToggleID = 0 
 foreach ($ServerName in $ListServer) 
 { 
 Add-Content $FileNameReportDisk "'toggle$ToggleID'," 
 $ToggleID++ 
 } 
  
Add-Content $FileNameReportDisk "])"" class='buttonall' type='button' value='Collapse ALL'/></th></SPAN>"  
Add-Content $FileNameReportDisk "</DIV>" 
#============================================================= 
# End Java Script Expand & Collapse SHOW ALL / HIDE ALL 
#============================================================= 
  
########################################################################################## 
  
} 
#============================================================= 
# Function to write the HTML TABLE INFO Header to the file 
Function writeTableHeader 
  
{ 
  
param($FileNameReportDiskAdd-Content $FileNameReportDisk "<tr bgcolor='lightgrey'>" 
Add-Content $FileNameReportDisk "<td width='5%' style='font-weight:bold' align='center'><font face='Georgia'><span style='font-size: 12pt'>Drive</td>" 
Add-Content $FileNameReportDisk "<td width='10%' style='font-weight:bold' align='center'><font face='Georgia'><span style='font-size: 12pt'>Drive Label</td>" 
Add-Content $FileNameReportDisk "<td width='15%' style='font-weight:bold' align='center'><font face='Georgia'><span style='font-size: 12pt'>Total Capacity(GB)</td>" 
Add-Content $FileNameReportDisk "<td width='15%' style='font-weight:bold' align='center'><font face='Georgia'><span style='font-size: 12pt'>Used Capacity(GB)</td>" 
Add-Content $FileNameReportDisk "<td width='15%' style='font-weight:bold' align='center'><font face='Georgia'><span style='font-size: 12pt'>Free Space(GB)</td>" 
Add-Content $FileNameReportDisk "<td width='10%' style='font-weight:bold' align='center'><font face='Georgia'><span style='font-size: 12pt'>Used Space %</td>" 
Add-Content $FileNameReportDisk "<td width='10%' style='font-weight:bold' align='center'><font face='Georgia'><span style='font-size: 12pt'>Free Space %</td>" 
Add-Content $FileNameReportDisk "</tr>" 
} 
#============================================================= 
 # Function to write the HTML footer to the file 
Function writeHtmlFooter 
  
{ 
  
param($FileNameReportDisk) 
  
  
Add-Content $FileNameReportDisk "</body>" 
Add-Content $FileNameReportDisk "</html>" 
} 
#============================================================= 
# # Function to write the HTML DISK INFO WMI to the file 
Function writeDiskInfo 
{ 
param($FileNameReportDisk,$devId,$volName,$frSpace,$totSpace$totSpace=[math]::Round(($totSpace/1073741824),3) 
$frSpace=[Math]::Round(($frSpace/1073741824),3) 
$usedSpace = $totSpace - $frspace 
$usedSpace=[Math]::Round($usedSpace,3) 
$UsedPercent = ($usedSpace/$totSpace)*100 
$UsedPercent = [Math]::Round($UsedPercent,3) 
$freePercent = ($frspace/$totSpace)*100 
$freePercent = [Math]::Round($freePercent,3) 
  
 if ($freePercent -le $critical) 
  { 
 Add-Content $FileNameReportDisk "<tr>" 
 Add-Content $FileNameReportDisk "<td><span style='font-size: 10pt'>$devid</td>" 
 Add-Content $FileNameReportDisk "<td><span style='font-size: 10pt'>$volName</td>" 
 Add-Content $FileNameReportDisk "<td><span style='font-size: 10pt'>$totSpace GB</td>" 
 Add-Content $FileNameReportDisk "<td><span style='font-size: 10pt'>$usedSpace GB</td>" 
 Add-Content $FileNameReportDisk "<td><span style='font-size: 10pt'>$frSpace GB</td>" 
 Add-Content $FileNameReportDisk "<td bgcolor='#FF0000' align=center><span style='font-size: 10pt'>$usedPercent%</td>" 
  Add-Content $FileNameReportDisk "<td bgcolor='#FF0000' align=center><span style='font-size: 10pt'><u>$freePercent%</u></td>" 
  Add-Content $FileNameReportDisk "</tr>" 
  
 #======================================================================================== 
 Write-Host -BackgroundColor blue -ForegroundColor white "Status Critical ==> $ServerName"  
 $ReadFileNameReport = (Get-Content $FileNameReportDisk) 
 $ReadLineToReplace = "<th width='100%'><font face='tahoma' color='black'><span style='font-size: 14pt'/><a class='button' href=""javascript:animatedcollapse.toggle('toggle$ToggleID')""><strong><u>$ServerName</u></strong></font></a></th>" 
  
 if 
 ( 
 $ReadFileNameReport |Where-Object {$_ -eq $ReadLineToReplace}     
 ) 
 { 
 echo " reanme the number line  $ReadCount To Critial" 
 $ReadCount    = ($ReadFileNameReport|Where-Object {$_ -eq $ReadLineToReplace}).ReadCount 
 $Replace = $ReadFileNameReport[$ReadCount-1]="<th width='100%'><font face='tahoma' color='black'><span style='font-size: 14pt'/><a class='button' href=""javascript:animatedcollapse.toggle('toggle$ToggleID')""><strong><u>$ServerName</u></strong></font></a></th><td bgcolor='#FF0000' align=center><span style='font-size: 10pt'>Critical!</td>" 
 $ReadFileNameReport | Set-Content $FileNameReportDisk 
 } 
  
 $ReadLineToReplace = "<th width='100%'><font face='tahoma' color='black'><span style='font-size: 14pt'/><a class='button' href=""javascript:animatedcollapse.toggle('toggle$ToggleID')""><strong><u>$ServerName</u></strong></font></a></th><td bgcolor='#FBB917' align=center><span style='font-size: 10pt'>Warning!</td>" 
 if 
 ( 
 $ReadFileNameReport |Where-Object {$_ -eq "<th width='100%'><font face='tahoma' color='black'><span style='font-size: 14pt'/><a class='button' href=""javascript:animatedcollapse.toggle('toggle$ToggleID')""><strong><u>$ServerName</u></strong></font></a></th><td bgcolor='#FBB917' align=center><span style='font-size: 10pt'>Warning!</td>"}     
 ) 
 { 
 echo " reanme the number line  $ReadCount To Critial + Warning " 
 $ReadCount    = ($ReadFileNameReport|Where-Object {$_ -eq $ReadLineToReplace}).ReadCount 
 $Replace = $ReadFileNameReport[$ReadCount-1]="<th width='100%'><font face='tahoma' color='black'><span style='font-size: 14pt'/><a class='button' href=""javascript:animatedcollapse.toggle('toggle$ToggleID')""><strong><u>$ServerName</u></strong></font></a></th><td bgcolor='#FF0000' align=center><span style='font-size: 10pt'>Critical!</td><td bgcolor='#FBB917' align=center><span style='font-size: 10pt'>Warning!</td>" 
 $ReadFileNameReport | Set-Content $FileNameReportDisk 
 } 
  
 #========================================================================================  
  
 #============================================================= 
  Write-Host " *** -->Send mail Alert Critical to $toCritical" 
 Send-MailMessage -From $from -To $ToCritical  -Subject "$subjectCritical $ServerName $devId $freepercent %- $date" -SmtpServer $Smtp ` 
  -Body "the server Name $Server have next infos 
  $Drive Label->$devid  -Total Capacity->$totspace GB >Used Capacity->$UsedSpace GB -Free Space->$FrSpace GB -Used Space->$usedpercent %- -Free Space percent->$freepercent %" 
 #=============================================================      
   } 
 elseif ($freePercent -le $warning) 
  { 
 Add-Content $FileNameReportDisk "<tr>" 
 Add-Content $FileNameReportDisk "<td><span style='font-size: 10pt'>$devid</td>" 
 Add-Content $FileNameReportDisk "<td><span style='font-size: 10pt'>$volName</td>" 
 Add-Content $FileNameReportDisk "<td><span style='font-size: 10pt'>$totSpace GB</td>" 
 Add-Content $FileNameReportDisk "<td><span style='font-size: 10pt'>$usedSpace GB</td>" 
 Add-Content $FileNameReportDisk "<td><span style='font-size: 10pt'>$frSpace GB</td>" 
 Add-Content $FileNameReportDisk "<td bgcolor='#FBB917' align=center><span style='font-size: 10pt'>$UsedPercent%</td>" 
  Add-Content $FileNameReportDisk "<td bgcolor='#FBB917' align=center><span style='font-size: 10pt'>$freePercent%</td>" 
 Add-Content $FileNameReportDisk "</tr>" 
  
  
 #======================================================================================== 
 Write-Host -BackgroundColor Blue  -ForegroundColor white "Status Warning ==> $ServerName"  
 $ReadFileNameReport = (Get-Content $FileNameReportDisk) 
 $ReadLineToReplace = "<th width='100%'><font face='tahoma' color='black'><span style='font-size: 14pt'/><a class='button' href=""javascript:animatedcollapse.toggle('toggle$ToggleID')""><strong><u>$ServerName</u></strong></font></a></th>" 
  
 if 
 ( 
 $ReadFileNameReport |Where-Object {$_ -eq $ReadLineToReplace}     
 ) 
 { 
 Start-Sleep 1 
 write-host "Rename Table Server Name in Critical State Disk Space" 
 $ReadCount  = ($ReadFileNameReport|Where-Object {$_ -eq $ReadLineToReplace}).ReadCount 
 $Replace = $ReadFileNameReport[$ReadCount-1]="<th width='100%'><font face='tahoma' color='black'><span style='font-size: 14pt'/><a class='button' href=""javascript:animatedcollapse.toggle('toggle$ToggleID')""><strong><u>$ServerName</u></strong></font></a></th><td bgcolor='#FBB917' align=center><span style='font-size: 10pt'>Warning!</td>" 
 $ReadFileNameReport | Set-Content $FileNameReportDisk 
 } 
 else 
 { 
 echo "Rename Critial+Warning" 
  if ($ReadFileNameReport | Where-Object {$_ -eq "<th width='100%'><font face='tahoma' color='black'><span style='font-size: 14pt'/><a class='button' href=""javascript:animatedcollapse.toggle('toggle$ToggleID')""><strong><u>$ServerName</u></strong></font></a></th><td bgcolor='#FF0000' align=center><span style='font-size: 10pt'>Critical!</td>"} 
   ) 
   { 
   $ReadCount = ($ReadFileNameReport | Where-Object {$_ -eq "<th width='100%'><font face='tahoma' color='black'><span style='font-size: 14pt'/><a class='button' href=""javascript:animatedcollapse.toggle('toggle$ToggleID')""><strong><u>$ServerName</u></strong></font></a></th><td bgcolor='#FF0000' align=center><span style='font-size: 10pt'>Critical!</td>"}).ReadCount 
   echo "$ReadCount for Line Critical + Warning Status ==> Already Critical" 
   $Replace =$ReadFileNameReport[$ReadCount-1]="<th width='100%'><font face='tahoma' color='black'><span style='font-size: 14pt'/><a class='button' href=""javascript:animatedcollapse.toggle('toggle$ToggleID')""><strong><u>$ServerName</u></strong></font></a></th><td bgcolor='#FF0000' align=center><span style='font-size: 10pt'>Critical!</td><td bgcolor='#FBB917' align=center><span style='font-size: 10pt'>Warning!</td>" 
   $ReadFileNameReport | Set-Content $FileNameReportDisk 
   } 
  elseif ($ReadFileNameReport | Where-Object {$_ -eq "<th width='100%'><font face='tahoma' color='black'><span style='font-size: 14pt'/><a class='button' href=""javascript:animatedcollapse.toggle('toggle$ToggleID')""><strong><u>$ServerName</u></strong></font></a></th><td bgcolor='#FBB917' align=center><span style='font-size: 10pt'>Warning!</td>"} 
    ) 
    { 
    $ReadCount = ($ReadFileNameReport | Where-Object {$_ -eq "<th width='100%'><font face='tahoma' color='black'><span style='font-size: 14pt'/><a class='button' href=""javascript:animatedcollapse.toggle('toggle$ToggleID')""><strong><u>$ServerName</u></strong></font></a></th><td bgcolor='#FBB917' align=center><span style='font-size: 10pt'>Warning!</td>"}).ReadCount 
    echo "$ReadCount for Line Critical +Warning Status ==> Already Warning" 
    $Replace =$ReadFileNameReport[$ReadCount-1]="<th width='100%'><font face='tahoma' color='black'><span style='font-size: 14pt'/><a class='button' href=""javascript:animatedcollapse.toggle('toggle$ToggleID')""><strong><u>$ServerName</u></strong></font></a></th><td bgcolor='#FF0000' align=center><span style='font-size: 10pt'>Critical!</td><td bgcolor='#FBB917' align=center><span style='font-size: 10pt'>Warning!</td>" 
    $ReadFileNameReport | Set-Content $FileNameReportDisk 
    } 
 } 
 #========================================================================================  
 } 
 else 
 { 
  Add-Content $FileNameReportDisk "<tr>" 
  Add-Content $FileNameReportDisk "<td><span style='font-size: 10pt'>$devid</td>" 
 Add-Content $FileNameReportDisk "<td><span style='font-size: 10pt'>$volName</td>" 
  Add-Content $FileNameReportDisk "<td><span style='font-size: 10pt'>$totSpace GB</td>" 
  Add-Content $FileNameReportDisk "<td><span style='font-size: 10pt'>$usedSpace GB</td>" 
  Add-Content $FileNameReportDisk "<td><span style='font-size: 10pt'>$frSpace GB</td>" 
   Add-Content $FileNameReportDisk "<td><span style='font-size: 10pt'>$UsedPercent%</td>" 
  Add-Content $FileNameReportDisk "<td><span style='font-size: 10pt'>$freePercent%</td>" 
  Add-Content $FileNameReportDisk "</tr>" 
  } 
Start-Sleep 2  
} 
#================================ 
# END CATEGORIES HTML 
#================================ 
  
 
#======================================= 
#  WRITING HTML  
#======================================= 
#STEP 1 
writeHtmlHeader $FileNameReportDisk 
  
# STEP 2 GENERATE SERVER 
$ToggleID = 0 
foreach ($ServerName in $ListServer) 
 { 
# ------------------------------------------------------ 
# Function Check Service WMI PINGSTATUS ==> Build HTML  
# ----------------------------------------------------- 
##################  
 # Display intput 
 write-host -BackgroundColor Blue "Server to Ping:       $ServerName" 
 $PingCheck = (Test-Connection -Quiet -ComputerName $ServerName) 
 # Display Results 
 if ($PingCheck)  
 { 
  # Now Ping the system 
  $Ping = get-wmiobject -Query "select * from win32_Pingstatus where Address='$ServerName'" 
  $IPV4   = ($Ping.IPV4Address).IPAddressToString 
  $PingTime =  $Ping.responsetime 
  write-host -BackgroundColor Green -ForegroundColor black "Server responded in:  $Pingtime ms"  
  "Server have IP:$IPV4" 
 #============================================================= 
 # Take Information For TAble  
 $UptimeServer  =  Get-Uptime $ServerName 
 $DescriptionServer = Get-DescriptionServer $ServerName 
  
 #============================================================= 
 # STEP 2.FORM TABLE 
 #------------------> Information ServerName 
 Add-Content $FileNameReportDisk "<table width='100%'>" 
 Add-Content $FileNameReportDisk "<tr>" 
 Add-Content $FileNameReportDisk "<thead >" 
 Add-Content $FileNameReportDisk "<tr>" 
    Add-Content $FileNameReportDisk "<th width='100%'><font face='tahoma' color='black'><span style='font-size: 14pt'/><a class='button' href=""javascript:animatedcollapse.toggle('toggle$ToggleID')""><strong><u>$ServerName</u></strong></font></a></th>"    
    Add-Content $FileNameReportDisk "</tr>" 
   Add-Content $FileNameReportDisk "</thead>" 
  Add-Content $FileNameReportDisk "</tr>" 
 Add-Content $FileNameReportDisk "</table>" 
 Add-Content $FileNameReportDisk "<div id='toggle$ToggleID'>"  
 #-------------------> Information Uptime & Description  
 Add-Content $FileNameReportDisk "<table width='100%'>" 
 Add-Content $FileNameReportDisk "<tr   bgcolor='#BCCA95'>" 
 Add-Content $FileNameReportDisk "<td  colSpan='4' style='font-weight:bold' align='center'><font face='Georgia'><span style='font-size: 12pt'>Uptime Server </td>" 
 Add-Content $FileNameReportDisk "<td  colSpan='3' style='font-weight:bold' align='center'><font face='Georgia'><span style='font-size: 12pt'>Description </td>" 
 Add-Content $FileNameReportDisk "</tr>" 
  Add-Content $FileNameReportDisk "<tr>" 
 Add-Content $FileNameReportDisk "<td colSpan='4' style='font-weight:bold' bgcolor='#FFF69A'><span style='font-size: 10pt'><u>$UptimeServer</u><br>Address IP:$IPV4</br>Time Ping:$PingTime ms</td>" 
 Add-Content $FileNameReportDisk "<td colSpan='3' bgcolor='#FFF69A' ><span style='font-size: 10pt'>$DescriptionServer</td>" 
 Add-Content $FileNameReportDisk "</tr>" 
 } 
 else 
 { 
 "Server did not respond ==> $ServerName" 
  #================MAIL ALERT HOST TIME OUT ============================================= 
 $PingResult = ping $ServerName 
 $DatePingTimeOut = (Get-Date) 
  Write-Host -BackgroundColor Red -ForegroundColor White " *** -->Send mail Host Time out to $toCritical" 
 Send-MailMessage -From $from -To $ToCritical  -Subject "Hostdown or TimeOut $ServerName-$DatePingTimeOut" -SmtpServer $Smtp ` 
  -Body "Detail ==>  $PingResult" 
     echo "------------------------------" 
    echo "Ping Out for the $ServerName" 
      Write-Host -BackgroundColor Red -ForegroundColor White " ==> $PingResult" 
 #============================================================= 
 #============================================================= 
 # STEP 2.FORM TABLE 
 #------------------> Information ServerName 
 Add-Content $FileNameReportDisk "<table width='100%'>" 
 Add-Content $FileNameReportDisk "<tr>" 
 Add-Content $FileNameReportDisk "<thead >" 
 Add-Content $FileNameReportDisk "<tr>" 
    Add-Content $FileNameReportDisk "<td width='100%' bgcolor='#FF0000'><font face='tahoma' color='black'><span style='font-size: 14pt'/><a class='button' href=""javascript:animatedcollapse.toggle('toggle$ToggleID')""><strong><u>Host Time Out $ServerName</u></strong></font></td>" 
    Add-Content $FileNameReportDisk "</tr>" 
   Add-Content $FileNameReportDisk "</thead>" 
  Add-Content $FileNameReportDisk "</tr>" 
     Add-Content $FileNameReportDisk "</table>" 
   Add-Content $FileNameReportDisk "<div id='toggle$ToggleID'>" 
   Add-Content $FileNameReportDisk "<table width='100%'>" 
   Add-Content $FileNameReportDisk "<td>$PingResult</td>"  
   Add-Content $FileNameReportDisk "</table>" 
 } 
# ------------------------------------------------------ 
# End Function Check Service WMI PINGSTATUS ==> Build HTML  
# ----------------------------------------------------- 
  # ------------------------------------------------------ 
  # Condition HOST LIVE Check Service WMI RPC ==> Build HTML  
  # ----------------------------------------------------- 
  echo "------------------------------" 
  echo "=====>" 
  echo "Going to Search Information Diskspace Or Error RPC" 
  $GetHDD = Get-WmiObject win32_logicaldisk -ComputerName $ServerName |  Where-Object {$_.drivetype -eq 3} 
  if ($GetHDD -ne $null) 
  { 
  writeTableHeader $FileNameReportDisk 
   foreach ($item in $GetHDD) 
  { 
  Write-Host  $item.DeviceID  $item.VolumeName $item.FreeSpace $item.Size  
  writeDiskInfo $FileNameReportDisk $item.DeviceID $item.VolumeName $item.FreeSpace $item.Size  
  } 
  } 
  else 
  { 
     
    $ReadFileNameReport = (Get-Content $FileNameReportDisk) 
    $ReadLineToReplace = "<th width='100%'><font face='tahoma' color='black'><span style='font-size: 14pt'/><a class='button' href=""javascript:animatedcollapse.toggle('toggle$ToggleID')""><strong><u>$ServerName</u></strong></font></a></th>" 
   
   
       if ($ReadFileNameReport |Where-Object {$_ -eq $ReadLineToReplace}) 
        { 
        Write-Host -BackgroundColor Red -ForegroundColor black   "RPC ERROR Rename Table Server Name in Critical State  " 
           $ReadCount    = ($ReadFileNameReport|Where-Object {$_ -eq $ReadLineToReplace}).ReadCount 
           $Replace = $ReadFileNameReport[$ReadCount-1]="<td width='100%' bgcolor='C22523'><font face='tahoma' color='black'><span style='font-size: 14pt'/><a class='button' href=""javascript:animatedcollapse.toggle('toggle$ToggleID')""><strong><u>RPC ERROR ACCESS WMI Out $ServerName</u></strong></font></td>" 
           $ReadFileNameReport | Set-Content $FileNameReportDisk  
    
           Start-Sleep 2 
    
 
           Add-Content $FileNameReportDisk "<table width='100%'>" 
           Add-Content $FileNameReportDisk "<td>!!!! RPC ERROR</td>"  
           Add-Content $FileNameReportDisk "</table>"  
         } 
    }     
  # ------------------------------------------------------ 
  # END Condition HOST LIVE Check Service WMI RPC ==> Build HTML  
  # -----------------------------------------------------   
  
  
 # ----------------------------------------------------- 
 Add-Content $FileNameReportDisk "</table>" 
 Add-Content $FileNameReportDisk "<table><br/></table></div>" 
 $ToggleID++ 
} 
#============================================================= 
# STEP 4 FOOTER  
writeHtmlFooter $FileNameReportDisk 
#======================================= 
#  END WRITE HTML  
#======================================= 
Function sendEmail 
 { 
 param($from,$to,$subject,$smtphost,$htmlFileName) 
 $body = Get-Content $FileNameReportDisk 
 $smtpNew-Object System.Net.Mail.SmtpClient $smtphost 
 $msg = New-Object System.Net.Mail.MailMessage $from$to$subject$body 
 $msg.isBodyhtml = $true 
 $smtp.send($msg) 
 } 
sendEmail $From  $To  $subject $Smtp $FileAttach 
#Remove-Item -Path $FileNameReportDisk -Confirm:$false -Force