Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

Windows 표준 시간대 변경 방법: CMD, PowerShell, 그룹 정책(GPO) 활용 가이드

표준 시간대(Time Zone)는 시간과 날짜와 함께 컴퓨터의 가장 중요한 설정 중 하나입니다. Windows와 각종 응용 프로그램이 올바르게 동작하려면 컴퓨터가 위치한 지역에 맞는 시간대가 설정되어 있어야 합니다. 이 글에서는 Windows에서 GUI, 명령 프롬프트(CMD), PowerShell, 그리고 그룹 정책(GPO)을 사용해 시간대를 변경하는 다양한 방법을 살펴봅니다.

설정 앱으로 시간대 변경하기

Windows 10과 Windows Server 2019/2016에서는 새로운 설정 앱을 통해 날짜와 시간대를 관리합니다. 작업 표시줄 시스템 트레이의 시계 아이콘을 마우스 오른쪽 버튼으로 클릭하고 [날짜/시간 조정]을 선택하면 됩니다. 기본적으로 [자동으로 시간대 설정] 옵션이 활성화되어 있으며, 이 옵션을 끄면 드롭다운 목록에서 원하는 시간대를 직접 선택할 수 있습니다.

팁: 제어판의 클래식 [날짜 및 시간] 애플릿을 사용할 수도 있습니다. 실행 창(Win+R)에서 timedate.cpl 명령을 입력하세요.

사용자의 시간대 변경 허용 또는 차단

기본적으로 날짜/시간 변경과 달리 시간대 변경에는 관리자 권한이 필요하지 않습니다. 이 동작은 로컬 보안 정책 콘솔(secpol.msc)에서 변경할 수 있습니다. [보안 설정 → 로컬 정책 → 사용자 권한 할당]으로 이동한 뒤 [시간대 변경] 정책을 확인하세요. 기본적으로 SYSTEM, Administrators, Users 그룹이 모두 포함되어 있습니다. 일반 사용자의 시간대 변경을 막으려면 이 목록에서 Users 그룹을 제거하면 됩니다.

Windows Server에서는 기본적으로 Local Service와 관리자만 시간대를 변경할 수 있는 권한을 가집니다.

Hyper-V Server나 Windows Server Core 환경에서는 내장 유틸리티인 sconfig를 사용해 시간대를 설정할 수 있습니다.

TZUtil.exe: CMD에서 시간대 변경하기

Windows 11/10/8.1 및 Windows Server 2019/2016/2012 R2에서는 전용 명령줄 도구인 tzutil.exe(Windows Time Zone Utility)를 사용합니다. 이 도구는 Windows 7부터 도입되었으며 실행 파일은 %WINDIR%\System32 폴더에 위치합니다.

명령 프롬프트(cmd.exe)를 열고 현재 시간대와 식별자(TimeZoneID)를 확인하려면 다음 명령을 실행합니다:

tzutil /g

예를 들어 출력 결과가 Pacific Standard Time이라면 이것이 현재 시간대 식별자입니다.

사용 가능한 모든 시간대 목록을 보려면 다음 명령을 사용합니다:

tzutil /l

주요 시간대 몇 가지는 다음과 같습니다:

Korea Standard Time       | (UTC+09:00) 서울
Tokyo Standard Time | (UTC+09:00) 오사카, 삿포로, 도쿄
China Standard Time | (UTC+08:00) 베이징, 충칭, 홍콩, 우루무치
SE Asia Standard Time | (UTC+07:00) 방콕, 하노이, 자카르타
GMT Standard Time | (UTC+00:00) 더블린, 에든버러, 리스본, 런던
W. Europe Standard Time | (UTC+01:00) 암스테르담, 베를린, 로마, 스톡홀름, 비엔나
Eastern Standard Time | (UTC-05:00) 미국 동부 시간(미국 & 캐나다)
Pacific Standard Time | (UTC-08:00) 태평양 표준시(미국 & 캐나다)

전체 시간대 목록은 Microsoft 공식 문서에서 확인할 수 있습니다:
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones

특정 UTC 오프셋(예: UTC-6)의 시간대를 빠르게 찾으려면 find 명령과 조합합니다:

tzutil /l | find /I "utc-06"

현재 시간대를 (UTC-05:00) 미국 동부 시간으로 변경하려면:

tzutil /s "Eastern Standard Time"

현재 시간대 정보는 Windows 레지스트리에 저장됩니다. 변경 여부는 아래 명령으로 확인할 수 있습니다:

reg query HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

특정 시간대의 서머타임(DST) 적용을 비활성화하려면 시간대 식별자 뒤에 _dstoff 접미사를 붙입니다:

tzutil /s "Central European Standard Time_dstoff"

이 명령은 시간대를 변경하는 동시에 계절별 시간 변경(서머타임)도 비활성화합니다.

시간대와 서머타임 설정에 대한 상세 정보는 다음 명령으로 확인할 수 있습니다:

w32tm /tz

참고로 구형 운영체제인 Windows XP와 Windows Server 2003에서는 다음 명령을 사용해야 했습니다:

RunDLL32.exe shell32.dll,Control_RunDLL timedate.cpl,,/Z Central America Standard Time
또는
Control.exe TIMEDATE.CPL,,/Z Central America Standard Time

PowerShell로 시간대 설정하기

PowerShell 콘솔에서도 현재 시간대 설정을 손쉽게 확인할 수 있습니다:

[TimeZoneInfo]::Local
또는
Get-TimeZone

출력 예시:

Id                         : Pacific Standard Time
DisplayName : (UTC-08:00) Pacific Time (US & Canada)
StandardName : Pacific Standard Time
DaylightName : Pacific Standard Time
BaseUtcOffset : -08:00:00
SupportsDaylightSavingTime : False

Windows에서 사용 가능한 모든 시간대를 조회하려면:

[System.TimeZoneInfo]::GetSystemTimeZones()
또는
Get-TimeZone -ListAvailable

목록이 매우 길기 때문에 필터링을 활용하면 원하는 시간대를 빠르게 찾을 수 있습니다:

Get-TimeZone -ListAvailable | Where-Object {$_.displayname -like "*canada*"}
또는
Get-TimeZone -ListAvailable | Where-Object {$_.Id -like "*euro*"}

모든 시간대를 알파벳 순으로 정렬해 보려면:

Get-TimeZone -ListAvailable | Select Id | Sort Id

PowerShell에서 현재 시간대를 변경하려면 다음 명령을 실행합니다:

Set-TimeZone -Name "US Eastern Standard Time"

이 예제는 PowerShell 5.1 기준이지만 최신 버전에서도 동일하게 동작합니다.

그룹 정책(GPO)으로 시간대 구성하기

Active Directory 도메인 환경에서는 그룹 정책을 통해 여러 컴퓨터의 시간대를 일괄 구성할 수 있습니다. GPO에는 시간대 설정을 위한 기본 제공 정책 항목이 없으므로, 일반적으로 GPO 로그온 스크립트 또는 레지스트리 가져오기 방식을 사용합니다.

GPO 로그온 스크립트로 시간대를 설정하는 간단한 PowerShell 스크립트 예제입니다(Windows XP/Server 2003 이상 모든 버전에서 동작):

$timeZone = "Central European Standard Time"
$WinOSVerReg = Get-Item "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion"
$WinOSVer = $WinOSVerReg.GetValue("CurrentVersion")
if ($WinOSVer -GE 6){
tzutil.exe /s $timeZone
} Else {
$params = "/c Start `"Change timeZone`" /MIN %WINDIR%\System32\Control.exe TIMEDATE.CPL,,/Z "
$params += $timeZone
$proc = [System.Diagnostics.Process]::Start( "CMD.exe", $params )
}

또 다른 방법은 시간대가 올바르게 설정된 기준 컴퓨터의 HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation 레지스트리 키를 GPO를 통해 다른 컴퓨터로 배포하는 것입니다. 레지스트리 브라우저에서 해당 키를 선택하면 모든 시간대 설정이 GPO 편집기([컴퓨터 구성 → 기본 설정 → Windows 설정 → 레지스트리])로 가져와집니다.

Active Directory 사이트별로 서로 다른 시간대를 적용하고 싶다면 GPP의 항목 수준 대상 지정(Item Level Targeting)을 사용해 특정 AD 사이트에만 설정을 적용할 수 있습니다.

RDS(원격 데스크톱 서비스) 인프라에서 사용자와 RDSH 서버의 시간대가 다르면 RDP 세션에 서버 시간이 표시되어 불편할 수 있습니다. 이 경우 [컴퓨터 구성 → 정책 → 관리 템플릿 → Windows 구성 요소 → 원격 데스크톱 서비스 → 원격 데스크톱 세션 호스트 → 장치 및 리소스 리디렉션] 경로의 [시간대 리디렉션 허용] 정책을 사용하면 사용자의 로컬 시간대를 RDP 세션으로 리디렉션할 수 있습니다.

Windows Server 2019 / Windows 10에서 시간대 변경 불가: 권한 없음 오류

Windows Server 2019 RTM과 일부 Windows 10 빌드에는 GUI를 통한 시간대 변경 시 성가신 버그가 존재합니다. 설정 앱이나 제어판 애플릿에서 시간대를 변경하려고 하면 다음과 같은 오류가 나타납니다:

날짜 및 시간
계속할 수 없습니다.
이 작업을 수행할 권한이 없습니다. 컴퓨터 관리자에게 문의하십시오.

먼저 관리자 권한이 있는 계정으로 로그인했는지, 그리고 로컬 보안 정책의 [시간대 변경] 항목에 Administrators 그룹이 포함되어 있는지 확인하세요.

임시 해결책으로 명령줄에서 시간대를 변경할 수 있습니다:

tzutil /l
tzutil /s "Central European Standard Time"

또는 PowerShell을 사용합니다:

Get-TimeZone -ListAvailable | Where-Object DisplayName -like "*Berlin*" | Set-TimeZone

GUI에서 변경하고 싶다면 관리자 권한 명령 프롬프트(관리자 권한으로 실행)에서 timedate.cpl 애플릿을 실행하거나, 서버 관리자([로컬 서버 → 표준 시간대])에서 열면 됩니다.

참고로 Exchange(Microsoft 365) 사서함의 시간대는 첫 연결 시 Windows 사용자 프로필 설정을 기준으로 자동 지정됩니다.