3

我目前有一个脚本来返回正确运行的服务器正常运行时间,但是当我收到服务器正常运行时间的值时,它包括天、分钟和秒。

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

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

我尝试查找仅返回天数的选项;但一直找不到。

这可能吗?

4

3 回答 3

10

当您减去两个日期时间时,您会得到一个TimeSpan结构,该结构具有您可以使用的Days属性。

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

如果您想要小数天数,请使用TotalDays而不是 Days,因此如果您有一天半的时间,您会得到1.5答案。

于 2013-05-20T14:41:57.507 回答
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

或者你也在寻找分数天?

于 2013-05-20T14:42:38.147 回答
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#############################
于 2014-02-27T22:33:57.637 回答