服务器正常运行时间,仅需几天时间.Powershell

时间:2013-05-20 14:36:55

标签: powershell

我目前有一个脚本可以恢复正常运行的服务器正常运行时间,但是当我收到服务器正常运行时间的值时,它包括天,分和秒。

以下是我认为需要修改的脚本行:

$os=Get-WmiObject win32_operatingsystem
$uptime=((get-date) - ($os.ConvertToDateTime($os.lastbootuptime))).tostring() 

我试过查找选项只返回天;但一直找不到一个。

这可能吗?

3 个答案:

答案 0 :(得分:10)

当你减去两个日期时间时,你得到一个TimeSpan结构,那个结构有一个Days属性你可以使用。

$uptime = ((get-date) - ($os.ConvertToDateTime($os.lastbootuptime))).Days

如果您希望小数天使用TotalDays代替天数,那么如果您有一天半的时间,则会得到1.5的答案。

答案 1 :(得分:4)

http://blog.mpecsinc.ca/2012/01/quick-way-to-find-server-up-time-in.html,试试这个:

(get-date)-([System.Management.ManagementDateTimeconverter]::ToDateTime((Get-WmiObject win32_operatingsystem).lastbootuptime))|select days

或者你也在寻找分数天?

答案 2 :(得分:0)

从CSV文件中读取服务器列表并获取正常运行时间并在HTML页面中生成报告。可以将其放在IIS或任何Web服务器上进行发布。

                #Html Page
                $now=get-date
                $table="<HTML><HEAD><TITLE>Server Uptime Page</TITLE></HEAD><BODY><p align=Center><font size=6 face=Bodoni MT color=#003333><B>Server UpTime Report</B></font></p>"
                $table += "<p align=Center><font face=Bodoni MT color=Green size=3>Last pulled : $now EST</font></P>"
                $table +="<p align=Center><table BORDER=1 width=500 cellspacing=0 cellpadding=3>"
                $table +="<tr>"
                $table +="<th bgcolor=#303030 colspan=1 width=300><p align=center><b><font face=Verdana size=2 color=#FFFFFF>Server Name</font></b></p></th>"
                $table +="<th bgcolor=#303030 colspan=1 width=200><p align=center><b><font face=Verdana size=2 color=#FFFFFF>Up Time</font></b></p></th>"
                $table +="</tr>"
                $nNeedToReboot=0
                $nServerList=0
                $more100=""
                $bw75100=""
                $bw5075=""
                $bw3050=""
                $bw029=""
                $ErrorSvr=""
                $svrlist =get-content d:\PSScripts\Uptime\ServerList.csv  ##Source File

                $LastUpdatedSvrList=(dir d:\PSScripts\Uptime\ServerList.csv).lastwritetime
                foreach($svr in $svrlist)
                    {
                        if($svr -ne ""){
                        $nServerList++
                        $uptime=-1
                        $lastreboot=-1
                        $wmi=$null
                        #Write-Host "Server is $svr"
                        $wmi = Get-WmiObject -Class Win32_OperatingSystem -Computer $svr
                        $lastreboot=$wmi.ConvertToDateTime($wmi.LastBootUpTime)
                        $uptime=($now-$lastreboot).days
                        $Svr+" : "+$uptime+" : "+$lastreboot
                            if($uptime -gt 99){
                                $nNeedToReboot++
                                $more100 += "<tr bgcolor='#FF0000'><td>"+$svr+"</td><td align=center>"+$uptime+"</td></tr>"
                                #Write-Host "$svr  $uptime"
                            }
                            if($uptime -gt 74 -AND $uptime -lt 100){
                                $nNeedToReboot++
                                $bw75100 += "<tr bgcolor='#E42217' ><td>"+$svr+"</td><td align=center>"+$uptime+"</td></tr>"
                                #Write-Host "$svr  $uptime"
                            }
                            if($uptime -gt 49 -AND $uptime -lt 75){
                                $nNeedToReboot++
                                $bw5075 += "<tr bgcolor='#C11B17'><td>"+$svr+"</td><td align=center>"+$uptime+"</td></tr>"
                                #Write-Host "$svr  $uptime"
                            }
                            if($uptime -gt 29 -AND $uptime -lt 50){
                                $nNeedToReboot++
                                $bw3050 += "<tr bgcolor='#DC381F'><td>"+$svr+"</td><td align=center>"+$uptime+"</td></tr>"
                                #Write-Host "$svr  $uptime"
                            }
                            if($uptime -gt -1 -AND $uptime -lt 30){             
                                $bw029 += "<tr bgcolor='#6CBB3C'><td>"+$svr+"</td><td align=center>"+$uptime+"</td></tr>"
                                #Write-Host "$svr  $uptime"
                            }
                            if($uptime -eq -1 -OR $lastreboot -eq -1){              
                                $ErrorSvr += "<tr bgcolor='#FF0000'><td>"+$svr+"</td><td align=center>Error connection</td></tr>"
                                #Write-Host "$svr  $uptime"
                            }
                    }
                    }
                    $table +=$more100+$bw75100+$bw5075+$bw3050+$bw029+$ErrorSvr
                $table+="</table>"
                $table +="<font size=2 face=Bodoni MT color=#003333><B>Servers in List : </B></font>$nServerList<br>"
                $table +="<font size=2 face=Bodoni MT color=#003333><B>Servers Need to be Rebooted : </B></font>$nNeedToReboot<br>"

                $table>c:\iis\Uptime.htm 
                Exit


                #########################END#############################