VBスクリプトでコンピュータの起動時間を表示させる方法

ページ : 1 2
<この記事を全て表示する場合はこちらをクリック>

引数でコンピュータ名を指定できる版

'引数が一個の場合はそれをコンピュータ名に指定する。
If WScript.Arguments.Count = 1 Then
	strComputer = WScript.Arguments.Item(0)
	'端末にPINGを打って応答が無かった場合はスクリプト終了。
	If PingResult(strComputer) = False Then
		Wscript.Quit
	End If
Else
	'それ以外の場合にはローカルコンピュータを指定する。
	strComputer = "."
End If

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
    ("Select * from Win32_OperatingSystem")

For Each objOS in colOperatingSystems
    dtmBootup = objOS.LastBootUpTime

    dtmLastBootupTime = WMIDateStringToDate(dtmBootup)
    dtmSystemUptime = DateDiff("s", dtmLastBootUpTime, Now)
    Wscript.Echo "このコンピュータの起動時間は" & Second2Time(dtmSystemUptime,1) & "です。"
Next

'UTC時間を時刻に変換
Function WMIDateStringToDate(dtmBootup)
	WMIDateStringToDate = CDate(Mid(dtmBootup, 5, 2) & "/" & _
	Mid(dtmBootup, 7, 2) & "/" & Left(dtmBootup, 4) _
	& " " & Mid (dtmBootup, 9, 2) & ":" & _
	Mid(dtmBootup, 11, 2) & ":" & Mid(dtmBootup,13, 2))
End Function

'秒を日時分秒に変換
Function Second2Time(intSec,int)
	Dim Day
	Dim Hour
	Dim Minute
	Dim Second
	Day    = intSec \ 86400
	Hour   = (intSec - Day * 86400) \ 3600
	Minute = (intSec - Day * 86400 - Hour * 3600) \ 60
	Second = intSec - Day * 86400 - Hour * 3600 - Minute * 60
	Select Case int
		Case 0
			Second2Time = Day & ":" & LeadingZero(Hour) & ":" & LeadingZero(Minute) & ":" & LeadingZero(Second)
		Case 1
			Second2Time = Day & "日" & LeadingZero(Hour) & "時間" & LeadingZero(Minute) & "分" & LeadingZero(Second) & "秒"
		Case Else
			Second2Time = ""
	End Select
End Function

'数値の整形
Function LeadingZero(intNumber)
	If intNumber < 10 Then
		LeadingZero = "0" & intNumber
	Else
		LeadingZero = intNumber
	End If
End Function

'strComputerにpingを行って成功したらPingResultにTrueを返す
Function PingResult(strComputer)
	Dim objWMIService
	Dim colItems
	Dim objItem
	Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
	Set colItems = objWMIService.ExecQuery _
	    ("Select * from Win32_PingStatus " & _
			"Where Address = '" & strComputer & "'")
	For Each objItem in colItems
	    If objItem.StatusCode = 0 Then
	        PingResult = True
	    Else
	    	PingResult = False
	    End If
	Next
	Set objWMIService = Nothing
	Set colItems = Nothing
End Function

参考

サーバーの稼動時間を調べる方法はありますか

ページ : 1 2
<この記事を全て表示する場合はこちらをクリック>

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です