728x90
PC가 장기간 켜져 있는 경우, 성능 저하 또는 보안 취약점이 생길 수 있습니다.
Active Directory(AD)를 사용하는 조직에서는 스크립트와 그룹 정책을 활용해 장기간 켜져 있는 PC를 자동으로 모니터링하고 30일 이상 켜진 PC에 경고 메시지를 표시해 종료를 권장할 수 있습니다.
이번 포스팅에서는 Batch Script로 PC 부팅 후 경과 일수를 계산하고, 경고 메시지를 표시하는 방법을 소개하겠습니다.
주요 기능
- PC 부팅 후 경과 일수 계산: net statistics workstation 명령으로 부팅 날짜와 현재 날짜를 비교하여 경과 일수를 계산합니다.
- 30일 이상 경과 시 알림 표시: msg 명령어를 사용해 간결한 팝업 알림을 띄우고, 추가 내용은 CMD 창에서 상세히 출력합니다.
- 그룹 정책을 통한 배포: AD 환경에서 그룹 정책(GPO)을 통해 이 스크립트를 모든 PC에 자동 배포하고, 주기적으로 실행되도록 설정할 수 있습니다.
Batch Script 코드
@echo off
chcp 437 >nul
setlocal enabledelayedexpansion
REM 1. 현재 날짜 가져오기
FOR /F "tokens=1-3 delims=- " %%a IN ('date /t') DO (
set A=%%a
set B=%%b
set C=%%c
)
REM 2. PC 부팅 날짜 가져오기
for /F "tokens=3-5 delims=- " %%d in ('net statistics workstation ^| findstr /i "since"') do (
set D=%%d
set E=%%e
set F=%%f
)
REM 3. 월, 일 앞에 0이 붙어있으면 제거하기
if "%B:~0,1%"=="0" set B=%B:~1%
if "%C:~0,1%"=="0" set C=%C:~1%
if "%E:~0,1%"=="0" set E=%E:~1%
if "%F:~0,1%"=="0" set F=%F:~1%
REM 4. 연도 차이만큼 월수 계산
set /A month_diff=(A-D)*12
REM 5. 월 차이만큼 일수 계산
set /A diff=B-E
if %diff% GTR 0 (
set /A day_diff=diff*30
) else (
set /A day_diff=0
)
REM 6. 최종 일수 차이 계산
set /A G=(month_diff+day_diff)+C-F
REM 7. PC가 30일 이상 켜져 있으면 경고 메시지 출력
if %G% GEQ 30 (
msg * "Reminder: Your PC has been on for over 30 days. Please shut down soon."
echo *****************************************
echo * *
echo * ALERT: PC has been running 30+ days *
echo * To improve performance and security, *
echo * please shut down your PC soon. *
echo * *
echo *****************************************
timeout /t 10
)
endlocal
코드 설명
- 현재 날짜 및 부팅 날짜 추출
- date /t와 net statistics workstation 명령을 통해 현재 날짜와 PC 부팅 날짜를 가져옵니다.
- 각각의 연도, 월, 일 값을 변수로 저장해 계산에 활용합니다.
- 날짜 값 조정
- 월과 일 값 앞에 붙은 ‘0’을 제거하여 오류 없이 날짜 계산을 할 수 있도록 합니다.
- 경과 일수 계산
- 연도 차이를 12개월 단위로 환산하여 month_diff로 계산한 후, 월 차이를 일수로 환산하여 day_diff에 저장합니다.
- 최종 경과 일수를 G로 계산하여 30일 이상 켜져 있는지 여부를 확인합니다.
- 경고 메시지 표시
- PC가 30일 이상 켜져 있으면 msg 명령어로 사용자에게 팝업 메시지를 띄워 종료를 권장합니다.
- 추가적인 경고 메시지를 CMD 창에 표시해 경과 일수와 종료 권장 메시지를 제공합니다.
CMD 창은 timeout /t 10으로 10초간 유지됩니다. (타임아웃 시간도 상황에 맞게 조절해 사용)
- 필요시 자동 종료되도록 스크립트를 수정해서 사용하여도 됩니다. (REM 7 이후)
그룹 정책(GPO)으로 배치 스크립트 배포하기
AD 환경에서는 그룹 정책을 통해 이 스크립트를 도메인 내 모든 PC에 자동으로 배포할 수 있습니다. 이렇게 설정하면, 장시간 켜져 있는 PC에 자동으로 경고 메시지가 표시되도록 설정할 수 있습니다.
- 그룹 정책 관리 도구(GPMC) 실행
- 도메인 컨트롤러에서 GPMC.msc를 실행해 그룹 정책 관리 도구를 엽니다.
- 새 GPO 생성
- 도메인 또는 특정 조직 단위(OU)에 새 GPO를 생성하고, "PC 부팅 시간 모니터링"과 같은 이름을 지정합니다.
- 예약된 작업 추가
- 컴퓨터 구성 > 기본 설정 > 제어판 설정 > 예약된 작업으로 이동합니다.
- 새 작업을 추가하여 이 스크립트를 지정한 시간에 매일 실행되도록 설정합니다. 스크립트 경로는 네트워크 경로를 사용해 \\ServerName\Scripts\PCBootMonitor.bat와 같은 UNC 경로로 지정할 수 있습니다.
이 설정을 통해 도메인에 연결된 모든 PC가 매일 지정된 시간에 스크립트를 실행하고, 장시간 켜져 있는 PC에 경고 메시지를 표시하게 됩니다. 이를 통해 IT 관리자가 PC를 주기적으로 종료하도록 유도할 수 있어, 조직 전체의 성능 및 보안성을 높이는 데 큰 도움이 됩니다.
728x90
반응형
'OS > Windows' 카테고리의 다른 글
Windows - Hyper-V 가상 스위치 오류 해결과 네트워크 설정 팁 (4) | 2024.11.16 |
---|---|
Windows - Hyper-V 설치 오류 : BIOS에서 가상화 활성화하기 (2) | 2024.11.15 |
Windows - DB / WAS / OS 튜닝 가이드 (0) | 2024.09.28 |
Windows - Hyper-V 가상 디스크 삭제 시 "액세스가 거부되었습니다" 오류 해결 방법 (0) | 2024.09.26 |
Windows - ODBC 설정 백업 및 복원 방법 (0) | 2024.07.18 |