Check Server Status
How To Check Server Status Windows PowerShell | VCP Blog (wordpress.com)
# Declare Variables
#
$OutputFileName="c:\temp\Server_Status.csv"
#
# Delete Output file
#
if (Test-Path $OutputFileName ){
Clear-Host
Write-Host "Output File already Exists, deleting output file now - $OutputFileName.`n" -ForegroundColor Black -BackgroundColor Green
Remove-Item $OutputFileName
[console]::Beep(500,700)
}
#
# Validate to check Single or Muliple servers
#
$Check_Type=Read-Host "Do you want to Check status of (S)ingle or (M)ultiple Servers?"
if ($Check_Type -eq "S" -and $Check_Type -ne "") {
$ServerName=Read-host "Enter Computer Name"
if (Test-Connection -ComputerName $ServerName -Count 1 -ErrorAction SilentlyContinue) {
# Write Column Heading delimited by Tab
#
echo "Host Name`tNode Status" > $OutputFileName
#
# Write Node Up, delimited by tab
echo "$ServerName`tUp" >> $OutputFileName
} else {
# Write Column Heading delimited by Tab
#
echo "Host Name`tNode Status" > $OutputFileName
#
# Write Node Down, delimited by tab
echo "$ServerName`tDown" >> $OutputFileName
}
#
# Launch Ping Status Output File
#
Write-Host "Task completed, launching file"
Invoke-Item $OutputFileName
} elseif ($Check_Type -eq "m" -and $Check_Type -ne "") {
$ServersList="c:\temp\ServersList.txt"
# Get Servers List
#
$ServerNames = Get-Content $ServersList
#
#
# Write Column Heading delimited by Tab
#
echo "Host Name`tNode Status" > $OutputFileName
#
# Loop Each Server and do ping test once
#
foreach ($ServerName in $ServerNames) {
$StartCount = 0
$TotalCount = (Get-Content $ServersList | Measure-Object | Select-Object -ExpandProperty Count)
#
# Test Node reachability (ping)
#
if (Test-Connection -ComputerName $ServerName -Count 1 -ErrorAction SilentlyContinue) {
# Write Node Up, delimited by tab
echo "$ServerName`tUp" >> $OutputFileName
} else {
# Write Node Down, delimited by tab
echo "$ServerName`tDown" >> $OutputFileName
}
$StartCount++
#
# Progress Bar
#
Write-Progress -Activity "Collate Host Status" -Status "Pinging Hosts..." -PercentComplete ($StartCount / $TotalCount *100)
}
#
# Launch Ping Status Output File
#
Write-Host "Task completed, launching file"
Invoke-Item $OutputFileName
} else {
Write-Host "Invalid Option`n" -BackgroundColor Red -ForegroundColor Green
[console]::Beep(600,700) }