본문 바로가기

Windows/Script

[VB] 시스템의 요일 정보 알아보기

WMI를 이용해서 시스템의 날짜와 요일 정보를 가져오는 스크립트를 간단하게 알아보고자 한다.

먼저 WMI 테스터를 실행한다.
시작 -> 실행 -> wbemtest

아래와 같은 화면이 나온다.

사용자 삽입 이미지

위 그림에서 연결 버튼을 누르면 아래와 같은 화면이 나온다.

사용자 삽입 이미지

위 그림의 붉은색 사각형에 아래와 같이 default 대신 cimv2를 입력하고 연결을 누른다.
사용자 삽입 이미지

그러면 아래와 같이 버튼들이 활성화 된다.
사용자 삽입 이미지

위 그림에서 클래스 열거(E) 버튼을 누르면 아래 그림과 같은 창이 나온다. 아래 그림에서 '모든 클래스'를 선택하고 확인 버튼을 누른다.
사용자 삽입 이미지

정상적으로 실행되면 아래 그림과 같은 화면이 나올 것이다. 아래 그림에서 스크롤바를 내려 'Win32_CurrentTime'을 찾아 더블 클릭한다. 그러면 그 다음 그림과 같은 화면이 나온다.
사용자 삽입 이미지
사용자 삽입 이미지

위 그림에서 붉은 색 사각형의 '시스템 속성 숨기기' 버튼을 클릭하면 아래와 같이 필요한 정보만 나온다.
속성 리스트를 잘 보면, Day, DayOfWeek, Hour, WeekInMonth.. 등등의 속성이 보임을 알 수 있다.
사용자 삽입 이미지

여기까지 WMI테스터의 역할은 끝났다. 요일 정보를 보여주는 VB 스크립트를 만들어 보자.
(VB 스크립트를 자동으로 만들어주는 Scriptomatic 이라는 Tool 도 있다.)

아래와 같이 입력해보자.

Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20

arrComputers = Array("KIKOOK")
For Each strComputer In arrComputers
   WScript.Echo
   WScript.Echo "=========================================="
   WScript.Echo "Computer: " & strComputer
   WScript.Echo "=========================================="

   Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
   Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_CurrentTime", "WQL", _
                                          wbemFlagReturnImmediately + wbemFlagForwardOnly)

  For Each objItem In colItems
      WScript.Echo "Day: " & objItem.Day
      WScript.Echo "DayOfWeek: " & objItem.DayOfWeek
      WScript.Echo "WeekInMonth: " & objItem.WeekInMonth
     
      WScript.Echo "=========================================="
  Next
Next

위에서 KIKOOK는 자기 컴퓨터의 이름을 넣은 것이다.
눈치가 빠른 분은 나머지 볼드체의 내용이 WMI 테스터에 있는 내용을 가져온 것임을 알 수 있을 것이다.
마지막 그림의 '속성' 항목의 이름을 그대로 사용하여 조회할 수 있다.
위 스크립트를 명령창으로 출력하도록 실행하면 아래와 같다.
c:\> cscript 파일명.vbs

사용자 삽입 이미지


위 결과에서 DayOfWeek 값이 1인 것은 곧 월요일이라는 의미이고, WeekInMonth가 3인 것은 세번째 주라는 의미이다.

이상 간단하게 WMI를 이용해서 vb 스크립트로 요일을 알아보는 스크립트를 보았다.

소스는 아래 첨부파일로 첨부한다.