hi, newbie but excited (first time posting and asking) …
I have a script i found that works great for pooling disk space on servers. What I thought would just be awesome is to also pool server “up times” added to this same script. The scripts writes to an html file inserting columns ect. I though, being new can’t figure out where to insert this addition of server uptime.
I did find a stand alone, which i suppose I could use, but would be nice to added to the server space script. Can one of you great experts suggest how to insert a script and it also insert a column for each servers up time, or is this just now going to work with in this script?
First lets create a text file, where we will later save the freedisk space info
$freeSpaceFileName = “FreeSpace.htm”
$serverlist = “sl.txt”
$warning = 30
$critical = 10
New-Item -ItemType file $freeSpaceFileName -Force
Getting the freespace info using WMI
#Get-WmiObject win32_logicaldisk | Where-Object {$_.drivetype -eq 3} | format-table DeviceID, VolumeName,status,Size,FreeSpace | Out-File FreeSpace.txt
Function to write the HTML Header to the file
Function writeHtmlHeader
{
param($fileName)
$date = ( get-date ).ToString(‘yyyy/MM/dd’)
Add-Content $fileName “”
Add-Content $fileName “”
Add-Content $fileName “”
Add-Content $fileName ‘xxxx.COM DiskSpace Report’
add-content $fileName ‘’
add-content $fileName “”
add-content $fileName “”
Add-Content $fileName “”
Add-Content $fileName “”
add-content $fileName “”
add-content $fileName “”
add-content $fileName “”
add-content $fileName “xxxx.COM DiskSpace Report - $date”
add-content $fileName “”
add-content $fileName “”
add-content $fileName “”
}
Function to write the HTML Header to the file
Function writeTableHeader
{
param($fileName)
Add-Content $fileName “”
Add-Content $fileName “Drive”
Add-Content $fileName “Drive Label”
Add-Content $fileName “Total Capacity(GB)”
Add-Content $fileName “Used Capacity(GB)”
Add-Content $fileName “Free Space(GB)”
Add-Content $fileName “Freespace %”
Add-Content $fileName “”
}
Function writeHtmlFooter
{
param($fileName)
Add-Content $fileName “”
Add-Content $fileName “”
}
Function writeDiskInfo
{
param($fileName,$devId,$volName,$frSpace,$totSpace)
$totSpace=[math]::Round(($totSpace/1073741824),2)
$frSpace=[Math]::Round(($frSpace/1073741824),2)
$usedSpace = $totSpace - $frspace
$usedSpace=[Math]::Round($usedSpace,2)
$freePercent = ($frspace/$totSpace)*100
$freePercent = [Math]::Round($freePercent,0)
if ($freePercent -gt $warning)
{
Add-Content $fileName “”
Add-Content $fileName “$devid”
Add-Content $fileName “$volName”
Add-Content $fileName “$totSpace”
Add-Content $fileName “$usedSpace”
Add-Content $fileName “$frSpace”
Add-Content $fileName “$freePercent”
Add-Content $fileName “”
}
elseif ($freePercent -le $critical)
{
Add-Content $fileName “”
Add-Content $fileName “$devid”
Add-Content $fileName “$volName”
Add-Content $fileName “$totSpace”
Add-Content $fileName “$usedSpace”
Add-Content $fileName “$frSpace”
Add-Content $fileName “$freePercent”
Add-Content $fileName “”
}
else
{
Add-Content $fileName “”
Add-Content $fileName “$devid”
Add-Content $fileName “$volName”
Add-Content $fileName “$totSpace”
Add-Content $fileName “$usedSpace”
Add-Content $fileName “$frSpace”
Add-Content $fileName “$freePercent”
#FBB917
Add-Content $fileName “”
}
}
Function sendEmail
{ param($from,$to,$subject,$smtphost,$htmlFileName)
$body = Get-Content $htmlFileName
$smtp= New-Object System.Net.Mail.SmtpClient $smtphost
$msg = New-Object System.Net.Mail.MailMessage $from, $to, $subject, $body
$msg.isBodyhtml = $true
$smtp.send($msg)
}
writeHtmlHeader $freeSpaceFileName
foreach ($server in Get-Content $serverlist)
{
Add-Content $freeSpaceFileName “”
Add-Content $freeSpaceFileName “”
Add-Content $freeSpaceFileName “ $server ”
Add-Content $freeSpaceFileName “”
writeTableHeader $freeSpaceFileName
$dp = Get-WmiObject win32_logicaldisk -ComputerName $server | Where-Object {$_.drivetype -eq 3}
foreach ($item in $dp)
{
Write-Host $item.DeviceID $item.VolumeName $item.FreeSpace $item.Size
writeDiskInfo $freeSpaceFileName $item.DeviceID $item.VolumeName $item.FreeSpace $item.Size
}
}
writeHtmlFooter $freeSpaceFileName
$date = ( get-date ).ToString(‘yyyy/MM/dd’)
sendEmail XXXXXXX “Disk Space Report - $Date” $freeSpaceFileName