server UP time in % in a month
hi
i have below script server time details in percentage in 1 month.
this sript running fine single server. need bulk servers data in csv inputfile below
servername
server1
server2
server3
please me script output in csv file querying input file:
#################script############3
param($numberofdays = 30, [switch]$debug)if($debug) { $debugpreference = " continue" }
[timespan]$uptime = new-timespan -start 0 -end 0
$currenttime = get-date
$startupid = 6005
$shutdownid = 6006
$minutesinperiod = (24*60)*$numberofdays
$startingdate = (get-date -hour 00 -minute 00 -second 00).adddays(-$numberofdays)
write-debug "'$uptime $uptime" ; start-sleep -s 1
write-debug "'$currenttime $currenttime" ; start-sleep -s 1
write-debug "'$startingdate $startingdate" ; start-sleep -s 1
$events = get-eventlog -logname system |
where-object { $_.eventid -eq $startupid -or $_.eventid -eq $shutdownid `
-and $_.timegenerated -ge $startingdate }
write-debug "'$events $($events)" ; start-sleep -s 1
$sortedlist = new-object system.collections.sortedlist
foreach($event in $events)
{
$sortedlist.add( $event.timegenerated, $event.eventid )
} #end foreach event
$uptime = $currenttime - $sortedlist.keys[$($sortedlist.keys.count-1)]
write-debug "current uptime $uptime"
for($item = $sortedlist.count-2 ; $item -ge 0 ; $item -- )
{
write-debug "$item `t `t $($sortedlist.getbyindex($item)) `t `
$($sortedlist.keys[$item])"
if($sortedlist.getbyindex($item) -eq $startupid)
{
$uptime += ($sortedlist.keys[$item+1] - $sortedlist.keys[$item])
write-debug "adding uptime. `t uptime now: $uptime"
} #end if
} #end item
"total time on $env:computername since $startingdate " + "{0:n2}" -f `
$uptime.totalminutes + " minutes."
$uptimeminutes = $uptime.totalminutes
$percentdowntime = "{0:n2}" -f (100 - ($uptimeminutes/$minutesinperiod)*100)
$percentuptime = 100 - $percentdowntime
"$percentdowntime% downtime , $percentuptime% uptime."
###################
mr raj not technician. posts here script has found people rewrite them him.
mr. raj. when going learn how edit simple script.
mike shoed how enumerate file of names need learn how use call script. cannot shoehorn example script , say it doesn't work. error message clear. "param" statement see how used.
import-csv .\serverlist.csv | foreach {
.\serveruptime.ps1 -computername $_.servername
}
now fix script has parameter computername.
param(
$computername,
$numberofdays = 30,
[switch]$debug
)
the rest have muddle through. time figure out have learned how write script.
i don't think mike wants rewrite you.
¯\_(ツ)_/¯
Windows Server > Windows PowerShell
Comments
Post a Comment