Exchange 일정 업데이트 도구를 사용하여 일광 절약 시간제를 반영하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 930879 - 이 문서가 적용되는 제품 보기.
중요 이 문서에서는 레지스트리 수정 방법을 설명합니다. 레지스트리를 수정하기 전에 해당 레지스트리를 백업하는 것이 좋습니다. 또한 문제가 발생할 경우 레지스트리를 복원하는 방법을 알고 있어야 합니다. 레지스트리 백업, 복원 및 수정 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
256986 Microsoft Windows 레지스트리 설명
모두 확대 | 모두 축소

이 페이지에서

소개

2005년 8월 8일에 미국 의회는 2005년 에너지 정책법(Energy Policy Act of 2005)을 통과시켰고 조지 W. 부시 대통령은 이 법에 서명했습니다. 이 법에서 변경되는 사항은 여러 가지인데 그 중에서도 다음 지역의 DST(일광 절약 시간제) 시작 날짜 및 종료 날짜가 변경됩니다.
  • 애리조나, 하와이, 푸에르토리코, 미국령 버진 아일랜드 및 미국령 사모아를 제외한 미국 모든 지역
참고
  • 캐나다 모든 지역은 새로운 DST 시작 날짜 및 종료 날짜를 따릅니다.
  • 애리조나의 나바호는 DST를 따르지 않습니다.
이 법이 2007년 3월 11일에 발효되면 DST가 기존보다 3주 일찍 시작되고 한 주 늦게 끝나게 됩니다. 이러한 변경을 일반적으로 DST 2007이라고 합니다. 이에 대한 내용이 다음 표에 나와 있습니다.
표 축소표 확대
DST 시작 날짜DST 종료 날짜
신규2007년 3월 11일 2007년 11월 4일
이전2007년 4월 1일2007년 10월 28일
DST 2007 규칙에 따라 시계는 미국 현지 시간으로 오전 02:00에 변경됩니다. 2007년의 주요 날짜는 다음과 같습니다.
  • 2007년 3월 11일에 시계가 오전 01:59에서 오전 03:00로 앞으로 이동합니다.
  • 2007년 11월 4일에 시계가 오전 01:59에서 오전 1:00로 뒤로 이동합니다.
이 문서에서는 이러한 날짜를 “확대 시행되는 DST 기간”이라고 합니다.

DST의 변경 사항은 미국과 캐나다에 적용됩니다. 그러나 북미 외부에 있는 사람들과 조직도 이 변경 사항의 영향을 받습니다. 북미 기반의 작업, 고객, 파트너 또는 공급업체를 둔 조직이 영향을 받게 됩니다. 또한 북미 기반의 시스템이나 날짜 및 시간 계산에 의존하는 시스템과 상호 작용하거나 통합하는 고객과 시스템도 영향을 받게 됩니다.

이 문서에서는 Microsoft Exchange Server에 저장된 일정 항목을 DST 규칙에 따라 업데이트하기 위해 수행해야 할 작업을 집중적으로 살펴봅니다. 이 문서에서 제시하는 해결 방법에서는 Exchange 일정 업데이트 도구(“Exchange 도구”)를 사용합니다. Exchange 도구가 제대로 작동하려면 Microsoft Office Outlook용 표준 시간대 데이터 업데이트 도구(“Outlook 도구”)가 있어야 합니다.
Outlook 도구를 사용하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
931667 Microsoft Office Outlook용 표준 시간대 데이터 업데이트 도구를 사용하여 2007년 변경되는 일광 절약 시간제를 반영하는 방법
2007년 변경되는 일광 절약 시간제의 영향을 받는 모든 Microsoft 제품에서 이에 대비하는 방법은 다음 Microsoft 웹 사이트를 참조하십시오.
http://www.microsoft.com/DST2007(영문)

Exchange 도구 정보

Microsoft Windows용 DST 업데이트를 설치하면 변경된 DST 기간 중 발생하는 모든 이전 약속이 한 시간 늦게 잘못 표시됩니다. 이러한 현상은 되풀이 약속과 단일 인스턴스 약속에 모두 해당합니다. Outlook, Outlook Web Access 및 CDO 기반 응용 프로그램에서 올바르게 표시되도록 이러한 약속을 업데이트해야 합니다.

Outlook에는 Microsoft Office Outlook용 표준 시간대 데이터 업데이트 도구라는 도구가 있습니다. 사용자는 이 도구를 사용하여 자신의 일정을 업데이트할 수 있습니다.

참고 Microsoft Office Outlook 2007의 경우 표준 시간대 데이터 업데이트 도구가 기본적으로 제공됩니다. 그러나 독립 실행형 버전의 표준 시간대 데이터 업데이트 도구를 사용하는 것이 좋습니다.
931667 Microsoft Office Outlook용 표준 시간대 데이터 업데이트 도구를 사용하여 2007년 변경되는 일광 절약 시간제를 반영하는 방법
Exchange 일정 업데이트 도구("Exchange 도구")를 사용하면 모든 사용자에게 Outlook 도구를 널리 배포할 때 발생하는 문제를 방지할 수 있으며 각 사용자가 해당 도구를 올바르게 실행하게 할 수 있습니다.

Exchange 일정 업데이트 도구의 설치와 사용에 도움을 주기 위해 VM(가상 컴퓨터)을 만들었습니다. 이 가상 컴퓨터는 Microsoft Windows Server 2003, Microsoft Office Outlook 2007, Microsoft Office Excel 2007 및 Microsoft Office Word 2007을 기반으로 하며 Virtual PC 2004 및 Virtual Server 2005 R2에서 작동합니다. 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
933185 Exchange 조직에서 일광 절약 시간제 2007 일정 업데이트를 배포하는 데 가상 컴퓨터를 사용할 수 있다

Exchange 도구에 대한 간략한 설명

Exchange 도구는 두 가지 실행 파일로 구성되어 있습니다. 이러한 파일에 대한 설명이 다음 표에 나와 있습니다.
표 축소표 확대
파일 이름설명
Msextmz.exe이 실행 프로그램은 Exchange Server를 실행하는 서버의 사서함에서 표준 시간대 정보를 추출합니다. 또한 지정된 각 사용자에 대해 Outlook 도구를 호출하여 지정된 사용자 목록의 사서함 일정도 업데이트합니다.
Msextmzcfg.exe이 실행 프로그램은 Exchange Server 서버의 업데이트와 관련된 단계를 대부분 수행하는 구성 도구입니다.

Exchange 도구의 버전 2

Exchange 일정 업데이트 도구의 버전 2가 2007년 2월 21일에 릴리스되었습니다. 이 문서에서는 Exchange 도구의 버전 2에 대해 설명합니다. Exchange 도구의 버전 1을 실행하는 경우 제거하고 버전 2를 설치하십시오. Exchange 도구의 버전 2에는 다음과 같은 개선 기능이 포함되어 있습니다.
  • 업데이트 모드에서 도구를 실행하는 경우 버전 2의 성능이 버전 1의 두 배입니다.
  • 사용자 인터페이스가 향상되었습니다.
  • 클라이언트 컴퓨터를 자주 다시 시작해야 하는 메모리 누수가 해결되었습니다.
  • 추출된 표준 시간대를 운영 체제 표준 시간대에 매핑하기 위한 개선된 알고리즘이 포함되었습니다.

Exchange 도구를 실행하는 경우의 위험 및 제한

Exchange 도구를 실행하기 전에 고려할 두 가지 문제가 있습니다. 다음 표에는 해당 문제, IT 인프라 및 사용자에 미치는 잠재적 영향, 완화 전략이 나와 있습니다.
표 축소표 확대
위험 효과완화
모임 업데이트가 많이 있습니다.서버 및 네트워크 성능이 저하됩니다.작은 사용자 일괄 처리 그룹을 먼저 업데이트하여 서버 및 네트워크 성능에 미칠 수 있는 영향을 확인합니다. 부하가 큰 경우 사용량이 적은 시간이나 유지 관리 시간 중에 도구를 실행합니다.
도구 실행에 너무 오랜 시간이 걸립니다.MSXTMZ.exe가 단일 스레드로 실행됩니다. 동시에 수천 명의 사용자에 대해 업데이트 모드로 이 파일을 실행하는 경우 Exchange 도구가 완료되는 데 몇 시간이나 며칠까지도 걸릴 수 있습니다. 모든 사서함에 대한 업데이트 작업 속도를 높이려면 일괄 처리 그룹으로 사용자를 나눈 다음 별도의 컴퓨터에서 별도의 MSXTMZ.exe 인스턴스를 사용하여 각각의 사용자 일괄 처리 그룹을 업데이트합니다.

사서함 업데이트 옵션

다음 표에는 DST 2007 표준 시간대 규칙을 사용하도록 사용자 사서함을 업데이트하는 데 사용할 수 있는 다섯 가지 옵션이 나와 있습니다.
표 축소표 확대
옵션장점단점
Outlook 도구를 각 사용자에게 배포한 다음 사용자가 자신의 사서함을 업데이트하게 합니다.Exchange 도구를 실행하는 위험과 제한이 방지됩니다.모든 사용자가 Outlook 도구를 제때에 올바르게 실행하도록 하기가 어렵습니다. Outlook이 없는 사용자는 Outlook 도구를 실행할 수 없습니다. 사용자의 혼동을 줄이기 위해 추가 교육이 필요합니다.
영향을 받는 모든 사용자와 서버에 대해 Exchange 도구를 실행합니다.사용자 입장에서 간편하고 효율적입니다.앞의 표에서 설명한 대로 Exchange 도구의 실행과 관련된 문제가 있습니다.
Exchange 도구를 실행하고 되풀이 약속만 업데이트합니다. 사용자가 Outlook 도구를 사용하여 자신의 사서함에서 단일 인스턴스 약속을 업데이트하게 합니다.단일 인스턴스 약속이 잘못 업데이트되는 경우의 위험이 더 적습니다.Outlook 도구 실행의 단점과 Exchange 도구 실행의 단점이 함께 나타납니다.
Exchange 도구와 Outlook 도구를 실행하지 않습니다. 일정을 검토하고 필요에 따라 약속을 다시 예약하도록 사용자에게 요청합니다.Exchange 도구를 실행하는 경우의 문제가 방지됩니다.모든 사용자가 영향을 받는 모든 약속을 다시 예약하지 않으면 일부 일정 항목이 확대 시행되는 DST 기간 중에 한 시간 늦거나 빠르게 됩니다. 사용자의 혼동을 줄이기 위해 추가 교육이 필요합니다.
Outlook 도구를 각 사용자에게 배포한 다음 사용자가 자신의 사서함을 업데이트하게 합니다. 그런 다음 Exchange 도구의 표준 시간대 추출 모드를 사용하여 사용자가 Outlook 도구를 실행하고 있는지 확인합니다. 사용자가 Outlook 도구를 실행하고 있지 않으면 관리자가 Exchange 도구를 실행할 수 있습니다.사용자가 제때에 도구를 실행하지 않는 위험이 줄어들고 Exchange 도구를 실행하는 경우의 문제가 방지됩니다.사용자가 Outlook 2007을 실행하는 경우 이 옵션을 선택할 수 없습니다.

Exchange 도구를 설치하는 방법

Exchange 일정 업데이트 도구는 자동 압축 풀림 실행 파일인 Msextmz.exe의 형태로 사용할 수 있습니다.

설치 후 설치 디렉터리의 파일에는 다음 파일이 포함됩니다.
  • Msextmz.exe
  • Msextmzcfg.exe
  • Msextmz.ini

    이 파일은 Msextmz.exe에서 사용하는 모든 매개 변수에 대해 설명하는 마스터 .ini 파일입니다.
  • Msextmzcfg.xml

    이 파일은 Outlook, CDO 및 Outlook Web Access 표준 시간대를 운영 체제 표준 시간대에 매핑하는 표준 시간대 매핑 파일입니다.

Microsoft 다운로드 센터에서 다음 파일을 다운로드할 수 있습니다.
그림 축소그림 확대
다운로드
지금 Exchange 일정 업데이트 도구 패키지 다운로드(영문)

Exchange 일정 업데이트 도구의 설치와 사용에 도움을 주기 위해 가상 컴퓨터를 만들었습니다. 이 가상 컴퓨터는 Microsoft Windows Server 2003, Microsoft Office Outlook 2007, Microsoft Office Excel 2007 및 Microsoft Office Word 2007을 기반으로 하며 Virtual PC 2004 및 Virtual Server 2005 R2에서 작동합니다.

Microsoft Exchange 일정 업데이트 도구의 가상 컴퓨터에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
933185 Exchange 조직에서 일광 절약 시간제 2007 일정 업데이트를 배포하는 데 가상 컴퓨터를 사용할 수 있다
Microsoft 지원 파일을 다운로드하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
119591 온라인 서비스로부터 Microsoft 지원 파일을 구하는 방법
Microsoft는 파일을 게시한 날짜에 사용할 수 있는 최신의 바이러스 예방 프로그램으로 이 파일을 검사했습니다. 이 파일은 해당 파일을 무단으로 변경할 수 없는 보안이 향상된 서버에 보관됩니다.

Exchange 도구에서 지원하는 언어

Exchange 도구는 영어로만 사용할 수 있습니다. 이 도구는 영어 컴퓨터에서만 실행됩니다.

Exchange 도구와 호환되는 Exchange Server 버전

Exchange 도구로 다음 버전의 Exchange Server에서 사서함을 업데이트할 수 있습니다.
  • Microsoft Exchange Server 2007 Enterprise Edition
  • Microsoft Exchange Server 2007
  • Microsoft Exchange Server 2007 Standard Edition
  • Microsoft Exchange Server 2003
  • Microsoft Exchange Server 2003 Enterprise Edition
  • Microsoft Exchange 2000 Server
  • Microsoft Exchange Server 2003 Standard Edition
  • Microsoft Exchange 2000 Server Enterprise Edition
  • Microsoft Exchange 2000 Server Standard Edition

Exchange 도구에서 지원하는 운영 체제

Exchange 도구는 다음 운영 체제에서 실행됩니다.
  • Microsoft Windows Server 2003
  • Microsoft Windows XP
  • Microsoft Windows 2000
Windows Vista는 지원되지 않습니다.

Exchange 도구를 실행하기 전에 수행할 작업

업데이트 설치

Exchange 도구를 실행하기 전에 클라이언트 컴퓨터와 서버 컴퓨터가 다음 업데이트로 올바르게 업데이트되었는지 확인합니다.
  1. 클라이언트 컴퓨터와 서버 컴퓨터에 Windows 일광 절약 시간제 업데이트를 설치합니다. Windows 운영 체제 소프트웨어를 실행하는 컴퓨터를 업데이트하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    931836 Microsoft Windows 운영 체제용 2007년 2월 누적 표준 시간대 업데이트
  2. Exchange 2003 SP2의 경우 조직과 관련된 다음 업데이트를 설치합니다.
    • 911829 Outlook Web Access에서 편집 작업을 수행하려고 하면 오류 메시지가 나타나거나 작성 틀을 눌러야 사용할 수 있다
    • 924334 Exchange Server 2003에서 Outlook Web Access 클라이언트에 Internet Explorer 7.0과 S/MIME 컨트롤을 설치하고 나면 메시지 작성 양식이 응답하지 않는다
    참고 1단계와 동시에 이 단계를 완료할 수 있습니다.

시스템 요구 사항 확인

Microsoft Office Outlook 2003이나 Microsoft Office Outlook 2007이 설치되어 있고 Outlook 표준 시간대 데이터 도구가 설치되어 있는 컴퓨터에서 Exchange 도구를 실행해야 합니다. 또한 클라이언트 컴퓨터에는 Microsoft .NET Framework 버전 2.0이 설치되어 있어야 합니다.

Outlook과 Microsoft Office Outlook용 표준 시간대 데이터 업데이트 도구는 Exchange 도구 다운로드 패키지의 일부가 아닙니다. 별도로 설치해야 합니다.

참고 Tzmove.exe라는 Outlook 도구 설치 관리자 패키지와 실제 Outlook 도구 실행 파일인 Tzmove.exe를 혼동하지 마십시오.

Exchange 도구를 성공적으로 실행하려면 컴퓨터에 PickLogonProfile 레지스트리 값이 설정되어 있으면 안 됩니다. 또는 이 레지스트리 값이 0으로 설정되어 있어야 합니다. 이 레지스트리 값이 있는지 확인하려면 다음과 같이 하십시오.

경고 레지스트리 편집기나 다른 방법을 사용하여 레지스트리를 잘못 수정하면 심각한 문제가 발생할 수 있습니다. 이러한 문제를 해결하기 위해 운영 체제를 다시 설치해야 할 수도 있습니다. Microsoft는 이러한 문제의 해결을 보증하지 않습니다. 레지스트리 수정에 따른 모든 책임은 사용자에게 있습니다.
  1. 시작, 실행을 차례로 누르고 regedit를 입력한 다음 확인을 누릅니다.
  2. 다음 하위 키를 확장합니다.
    HKEY_CURRENT_USER\Software\Microsoft\Exchange\client\options\
  3. options를 누른 다음 PickLogonProfile 값이 있는지 확인합니다. PickLogonProfile 값이 있고 1로 설정되어 있으면 값을 0으로 설정합니다. 이렇게 하려면 다음과 같이 하십시오.
    1. PickLogonProfile을 마우스 오른쪽 단추로 누른 다음 수정을 누릅니다.
    2. 값 데이터 상자에 0을 입력한 다음 확인을 누릅니다.
Exchange Server나 Exchange 시스템 관리 도구를 실행하는 컴퓨터에서는 Exchange 도구를 실행할 수 없습니다. Exchange Server나 Exchange 시스템 관리 도구를 실행하는 컴퓨터에서 Exchange 도구를 설치하려고 하면 다음과 유사한 내용의 오류 메시지가 나타납니다.
Microsoft Exchange 일정 업데이트 도구는 Microsoft Exchange와 함께 설치할 수 없습니다.

Msextmz.exe를 수동으로 구성하고 실행하는 방법

Msextmz.ini 파일 구성

Msextmz.exe를 올바르게 실행하려면 Msextmz.ini 파일을 올바르게 구성해야 합니다. Msextmz.ini 파일을 수정하기 전에 Msextmz.ini 파일에서 설명을 자세히 읽는 것이 좋습니다.

Msextmz.exe 실행 모드 지정

Msextmz.exe는 두 가지 모드로 실행됩니다. 실행 모드를 지정하려면 Msextmz.ini 파일에서 특정 매개 변수를 설정해야 합니다. 아래에서는 세 가지 모드와 Msextmz.ini 파일에서 이러한 모드를 구성하는 방법에 대해 설명합니다.
  • 표준 시간대 추출

    이 모드에서 Msextmz.exe는 MAPI 속성 집합을 읽어 각 사서함에서 표준 시간대 정보를 추출합니다.

    Msextmz.exe는 사용자의 일정에서 사용자가 이끄는 되풀이 약속을 검사하여 사용자의 표준 시간대를 확인할 수 있습니다. 그러나 이 옵션은 리소스를 많이 사용합니다. 따라서 기본적으로 이 옵션은 사용할 수 없게 설정되어 있습니다. 이 옵션을 사용할 수 있게 설정하려면 Msextmz.ini 파일에서 ReadCalendarTimezones 매개 변수를 설정하십시오.

    Msextmz.exe는 사서함 레거시 DN의 목록을 포함하는 출력 파일에 각 사용자에 대한 표준 시간대 정보를 기록합니다. 각 사서함 레거시 DN에는 다음과 같은 종류의 표준 시간대 값이 있습니다.
    • Outlook Web Access 표준 시간대
    • CDO 표준 시간대
    • Outlook 표준 시간대
    • 되풀이 모임 표준 시간대
    파일의 형식은 다음과 같습니다.
    User_DN<\TAB >CDO_Time_Zone<\TAB>Outlook Web Access_Time_Zone<\TAB>Outlook_Time_Zone<\TAB >Recurring_Meeting_Time_Zone<\CRLF>
    Msextmz.exe에서 위에 있는 네 종류의 표준 시간대 중 하나에 대한 표준 시간대 정보를 추출할 수 없으면 사서함 레거시 DN이 오류 파일에 기록됩니다.

    사용자를 하나의 표준 시간대에만 매핑하려면 출력 파일을 Microsoft Excel로 가져와야 합니다. Excel에서 표준 시간대 중 하나를 기준으로 사용자 목록을 필터링합니다. 사용하는 표준 시간대는 환경에 따라 달라집니다.

    예를 들어, 대부분의 사용자가 BlackBerry 장치, Exchange 5.5 Outlook Web Access 또는 다른 CDO 기반 솔루션을 사용하는 경우 CDO 표준 시간대를 기준으로 목록을 필터링합니다. 대부분의 사용자가 Exchange Outlook Web Access를 사용하는 경우에는 Outlook Web Access 표준 시간대를 기준으로 목록을 필터링합니다. 대부분의 사용자가 이러한 경우 중 하나에 해당하지 않으면 되풀이 모임 표준 시간대를 기준으로 목록을 필터링합니다.

    표준 시간대 추출 모드로 도구를 실행하려면 .ini 파일을 다음과 같이 구성해야 합니다.
    • CommandLine 매개 변수는 주석 처리를 제거한 상태로 둡니다.
    • OutputFile 매개 변수를 설정합니다.
    • ErrorFile 매개 변수를 설정합니다.
    • ServerDN 매개 변수를 설정합니다.
    • Profile 매개 변수를 설정합니다.
    • LogFile 매개 변수를 설정합니다.
    • ExportTimezones 매개 변수를 1로 설정합니다.
    • .ini 파일에서 나머지 매개 변수를 주석으로 처리합니다.
  • 업데이트

    이 모드에서 Msextmz.exe는 입력 파일에 지정된 사서함을 모두 업데이트합니다. 입력 파일의 형식은 다음과 같아야 합니다.
    User_DN<\TAB>Server_Friendly_Name<\TAB>OS_Time Zone_Registry_Key<\CRLF>
    한 클라이언트에서 Msextmz.exe의 인스턴스를 하나만 실행할 수 있습니다. 그러나 여러 클라이언트에서 Msextmz.exe를 동시에 실행할 수 있습니다.

    이 모드로 Msextmz.exe를 실행하려면 Msextmz.ini 파일을 다음과 같이 구성해야 합니다.
    • CommandLine 매개 변수가 주석 처리되어 있지 않고 Tzmove.exe의 올바른 위치를 가리키는지 확인합니다.
    • InputFile 매개 변수를 설정합니다.
    • OutputFile 매개 변수를 주석으로 처리합니다.
    • ErrorFile 매개 변수를 설정합니다.
    • ServerDN 매개 변수를 설정합니다.
    • LogFile 매개 변수를 설정합니다.
    • LogDirectory 매개 변수를 설정합니다.
    • ExportTimezones 매개 변수를 주석으로 처리합니다.
    • 나머지 매개 변수의 주석 처리를 제거합니다.
    업데이트 모드에서 Msextmz.exe는 다른 Exchange 서버의 사용자를 포함하는 입력 파일을 받아들일 수 있습니다. .ini 설정에서는 사용자가 Exchange Server의 DN을 제공하도록 요구합니다. 이 경우 Exchange 조직에서 Exchange Server의 서버 DN만 지정해야 합니다.

    되풀이 약속만 업데이트하려면 CommandLine 매개 변수를 다음 값으로 구성합니다.
    tzmove.exe /q /onlyrecurring
    되풀이 약속과 단일 인스턴스 약속을 모두 업데이트하려면 기본 CommandLine 값을 사용합니다.

Msextmz.exe에 대한 사용 권한 구성

Msextmz.exe를 실행하는 데 필요한 사용 권한은 사용되는 실행 모드에 따라 달라집니다. 다음 표에는 각 실행 모드에 필요한 사용 권한이 나와 있습니다.
표 축소표 확대
실행 모드사용 권한
표준 시간대 추출Exchange 보기 권한만 있는 관리자
Msextmz.exe를 실행하는 컴퓨터의 로컬 관리자
업데이트모든 사서함에 대한 전체 사서함 액세스 및 다른 사람 이름으로 보내기 권한이 있는 도메인 사용자
Msextmz.exe를 실행하는 컴퓨터의 로컬 관리자

"사서함 사용 권한 부여" 스크립트

GrantMailboxPermission.vbs 샘플 스크립트를 사용하여 모든 사서함에 대한 전체 사서함 액세스 및 다른 사람 이름으로 보내기 권한을 도메인 사용자에게 부여할 수 있습니다.

이 스크립트는 Exchange 2000 Server나 Exchange Server 2003을 실행하는 컴퓨터에서 Exchange 관리자만 실행할 수 있습니다. Exchange Server 2007을 실행하는 컴퓨터에서는 이 스크립트를 실행할 수 없습니다. 그러나 Exchange 관리 셸을 사용하여 필요한 사용 권한을 부여할 수 있습니다.

VBS 스크립트의 코드는 "참조" 절에 나와 있습니다. 다음 표에서는 이 스크립트가 실행되는 두 가지 모드에 대해 설명합니다.
표 축소표 확대
모드명령줄설명
추가CScript GrantMailboxPermission.vbs ?add Domain_Name\User_NameFile_Name입력 파일에 포함된 사용자 사서함에 대한 전체 사서함 액세스 및 다른 사람 이름으로 보내기 권한을 Domain_Name\User_Name에게 부여합니다. 입력 파일은 CRLF로 구분된 사용자 사서함의 레거시 DN을 포함하는 텍스트 파일이어야 합니다.

스크립트에서 GrantMailboxPermission.log 파일을 생성합니다. 이 파일은 처리된 사서함에 대한 기록입니다. 로그 파일의 첫 행은 권한이 부여된 Domain_Name\User_Name 사용자입니다. 이 파일을 삭제하지 마십시오. 이 파일은 제거 모드에서 사용됩니다.

해당 사용자에게 명시적인 "거부" 권한이 할당된 경우 스크립트에서 "GrantMailboxPermission.err"이라는 파일에 정보를 기록합니다. 스크립트에서는 권한을 부여하거나 변경하지 않습니다.

사용자가 "거부" 권한이 할당된 보안 그룹에 속해 있는 경우 스크립트에서 전체 사서함 액세스 및 다른 사람 이름으로 보내기 권한을 부여합니다. 그러나 해당 사용자가 사서함에 로그온할 수 없습니다. 모든 오류는 GrantMailboxPermission.err 파일에 기록됩니다.
제거CScript GrantMailboxPermission.vbs ?removeGrantMailboxPermission.log 파일에 포함된 사서함에 대한 전체 사서함 액세스 및 다른 사람 이름으로 보내기 권한을 Domain_Name\User_Name에게서 제거합니다. Domain_Name\User_Name은 GrantMailboxPermission.log 파일에 지정되어 있습니다.
참고 Exchange Server를 실행하는 컴퓨터에서 이 스크립트를 실행하면 스크립트에서 사용자를 성공적으로 처리하는 경우 마침표(.)를 반환하고, 사용자를 성공적으로 처리하지 못하는 경우에는 느낌표(!)를 반환합니다.

참고 표준 시간대 추출 모드의 출력 파일을 이 스크립트의 입력 파일로 사용할 수 없습니다. 이 스크립트의 입력 파일을 만들려면 표준 시간대 추출 출력 파일의 내용을 메모장에 붙여 넣고 새 문서로 저장한 다음 이 문서를 입력 파일로 사용할 수 있습니다.

업데이트 모드에서 로깅이 작동하는 방식

Outlook 표준 시간대 데이터 업데이트 도구에서 기록

Outlook 도구가 실행될 때 임시 디렉터리에 로그 파일이 만들어집니다. 이 파일의 이름은 "Outlook Time Zone Update.log"입니다. Msextmz.exe는 "Outlook Time Zone Update.log"에서 정보를 추출한 다음 .ini 파일의 LogDirectory에 지정된 디렉터리에 사용자별 로그 파일을 만듭니다.

이러한 파일의 이름은 다음과 같은 형식으로 지정됩니다.
MSExTmz-User’s CN from the User DN-Random number.LOG
예를 들어, Outlook 도구에서 다음과 같은 정보를 기록합니다.
MSExTmz-USER3-0x0131273E.LOG
이러한 정보는 Outlook 도구에서 아래의 DN을 가진 사용자를 처리할 때 기록합니다.
/O=FIRST ORGANIZATION/OU=FIRST ADMINISTRATIVE GROUP/CN=RECIPIENTS/CN=USER3

오류 파일

Msextmz.exe에서 사서함에 대해 Outlook 도구를 실행할 수 없는 경우 사용자의 DN이 오류 파일에 기록됩니다. Outlook 도구가 성공적으로 실행된 경우에는 Msextmz.exe에서 오류 파일에 아무 것도 기록하지 않습니다.

로그 파일

Msextmz.ini 파일에 로그 파일 옵션이 구성되어 있으면 Msextmz.exe에서 명령 프롬프트 창으로 출력되는 정보도 지정된 파일에 기록됩니다.

Msextmzcfg.exe를 실행하는 방법

Msextmzcfg.exe는 표준 시간대 추출, 각 사용자의 표준 시간대 확인 및 업데이트 모드로 Msextmzcfg.exe를 실행하는 데 필요한 .ini 파일과 사용자 목록의 생성 과정을 자동화합니다. 이러한 단계를 수동으로 수행하는 대신 Msextmzcfg.exe를 사용하여 수행하는 것이 좋습니다. 이 절에서는 Msextmzcfg.exe를 실행하는 방법을 설명합니다.

필요한 사용 권한

Msextmzcfg.exe를 실행하는 데 사용되는 계정은 클라이언트에서 다음과 같은 사용 권한이 있어야 합니다.
  • Exchange 보기 권한만 있는 관리자
  • 로컬 관리자

Msextmzcfg.exe를 사용하여 Exchange 서버를 업데이트하는 과정의 예

  1. 클라이언트 컴퓨터에서 업데이트할 Exchange 서버에 있는 사서함에 로그온하는 Outlook 프로필을 만듭니다. 프로필이 온라인 모드에 있는지 확인한 다음 해당 프로필을 기본 프로필로 구성합니다.

    참고 Exchange Server에서 온라인 모드를 지원해야 합니다.
  2. Msextmzcfg.exe를 실행하여 Exchange 도구를 시작합니다.
  3. Exchange 일정 업데이트 도구 마법사의 페이지 1에서 다음 절차 중 하나를 완료합니다.

    Exchange Server에서 모든 사서함의 표준 시간대를 추출하려면 다음과 같이 하십시오.
    1. Server Name 상자에 Exchange 서버의 이름이나 FQDN(정규화된 도메인 이름)을 입력합니다. 이름에 "."이 포함되어 있으면 NetBIOS 이름을 대신 사용하십시오. 서버가 다른 Active Directory 포리스트에 있으면 Msextmzcfg.exe가 실패합니다.
    2. Output File From Extraction 상자에 모든 사서함 표준 시간대 정보를 포함할 파일의 이름을 입력합니다.
    3. 되풀이 모임의 표준 시간대를 추출하려면 Extract Recurring Meeting Time Zones 확인란을 선택합니다.

      중요 이 설정을 사용하면 추출 모드의 실행 시간이 크게 늘어납니다. 기본적으로 Extract Recurring Meeting Time Zones 확인란은 선택되어 있지 않습니다.
    4. Outlook Profile Name 목록을 누른 다음 1단계에서 만든 프로필을 누릅니다.
    5. Next를 누릅니다.


    표준 시간대 추출을 건너뛰려면 다음과 같이 하십시오.
    1. Skip time zone extraction 확인란을 선택합니다. 기본적으로 Skip time zone extraction 확인란은 선택되어 있지 않습니다.
    2. Output File From Extraction 상자에 이전 표준 시간대 추출 실행의 출력 파일 이름을 입력합니다.
    3. Server Name 상자에 3b 단계에서 지정한 출력 파일을 생성하는 데 사용된 Exchange 서버의 이름이나 FQDN을 입력합니다.
    4. Next를 누릅니다.
  4. 표준 시간대 추출이 완료되면 Msextmzcfg.exe에서 출력 파일의 구문을 분석하고 사용자 사서함의 표준 시간대를 실제 운영 체제 표준 시간대에 매핑하려고 합니다.

    일치시킬 수 없는 표준 시간대가 있으면 Map Time Zone 페이지에서 해당 표준 시간대를 수동으로 매핑해야 합니다. 이렇게 하려면 Windows Time Zone 목록에서 사용자 시간대와 일치하는 Windows 표준 시간대를 누르고 Next를 누릅니다.
  5. 매핑 과정이 완료되면 Msextmzcfg.exe에서 사용자를 다음 그룹으로 분류합니다.
    • 표준 시간대가 하나뿐인 사용자(예: CDO, Outlook Web Access, Outlook 또는 되풀이 모임 표준 시간대가 있는 사용자)나 동일한 운영 체제 표준 시간대에 매핑되는 여러 표준 시간대가 있는 사용자
    • 서로 다른 운영 체제 표준 시간대에 매핑되는 여러 표준 시간대가 있는 사용자
    • 표준 시간대 정보가 없는 사용자
    “충돌”하는 사용자와 “존재하지 않는” 사용자의 목록을 별도의 텍스트 파일에 저장할 수 있습니다. 이렇게 하려면 다음과 같이 하십시오.
    1. Users with conflicting time zone information 영역에서 Output File 상자에 ConflictUsers.txt를 입력합니다.
    2. Users with no time zone information 영역에서 Output File 상자에 NonExistent.txt를 입력합니다.
  6. Calendar update configuration 페이지에서 사용자 목록 입력 파일, .ini 파일 및 사서함을 업데이트할 배치 파일을 생성하는 데 필요한 정보를 제공합니다. 이렇게 하려면 다음과 같이 하십시오.
    1. Select time zones that need to be updated 목록에서 업데이트할 표준 시간대의 확인란을 선택합니다.
    2. Number of Batch Files 상자에 생성할 사용자 일괄 처리 그룹의 수를 입력합니다.

      이 정보는 업데이트 실행 시간을 단축하려는 경우 유용합니다. 큰 사용자 목록을 작은 일괄 처리 그룹으로 나눈 다음 업데이트 모드로 Msextmz.exe의 여러 인스턴스를 실행하여 업데이트 실행 시간을 단축할 수 있습니다. 별도의 컴퓨터에서 이 작업을 수행하고 Msextmz.exe의 인스턴스마다 별도의 사용자 일괄 처리 그룹을 처리하게 합니다.

      참고 Msextmz.exe의 여러 인스턴스를 동일한 클라이언트 컴퓨터에서 실행할 수 없습니다.
    3. Tzmove.exe path 상자에 Outlook 도구와 매개 변수의 경로를 입력합니다. 되풀이 모임만 업데이트하려면 Recurring meetings only 확인란을 선택합니다.
    4. Post Mailbox Delay (seconds) 상자에 사서함을 업데이트하는 사이에 프로필 작성을 지연할 시간(초)을 입력합니다. 기본값 0초를 사용하는 것이 좋습니다.
    5. Per Mailbox Timeout (minutes) 상자에 Outlook 도구가 시간 초과될 때까지의 시간(분)을 입력합니다. 기본값 15분을 사용하는 것이 좋습니다.
  7. Finish를 누릅니다. Msextmzcfg.exe에서 현재 실행 디렉터리 아래에 하위 디렉터리를 생성합니다. 하위 디렉터리의 이름은 Exchange Server의 이름입니다. 이 하위 디렉터리에는 다음 파일이 포함됩니다.
    • MSExTmz_x.ini

      이 파일은 업데이트 모드로 실행되기 위해 Msextmz.exe에서 사용하는 .ini 파일입니다. x는 일괄 처리 번호의 자리 표시자입니다.
    • Mailboxes_x.txt

      이 파일은 업데이트 모드로 실행되기 위해 Msextmzcfg.exe에서 사용하는 사용자 목록 입력 파일입니다. x는 일괄 처리 번호의 자리 표시자입니다.
    • MSExTmz_x.bat

      이 파일은 Mailboxes_x.txt 파일에 지정된 사용자에 대해 업데이트 모드로 Msextmzcfg.exe를 실행하는 배치 파일입니다.
    • NonExistent.txt

      이 파일에는 사사함에 표준 시간대 정보가 없는 사용자의 목록의 포함됩니다.
    • ConflictUsers.txt

      이 파일에는 표준 시간대 충돌이 있는 사용자의 목록이 포함됩니다.
  8. 서버 이름과 동일한 이름의 하위 디렉터리를 찾아 메모장에서 Mailboxes_x.txt 파일을 연 다음 리소스 또는 시스템 사서함 항목을 모두 제거하고 Mailboxes_x.txt 파일을 저장합니다.
  9. 다음 단계를 수행합니다.
    1. Outlook을 시작한 다음 Outlook에서 프로필을 선택하라는 메시지를 표시하지 않고 기본 프로필을 사용하여 서버에 제대로 로그온하는지 확인합니다.
    2. Outlook 시작 중에 메시지가 표시되지 않는지 확인합니다. 메시지가 표시되면 Msextmz.exe가 실행될 수 없습니다.
    3. 다음 파일이 없는지 확인합니다.
      %USERPROFILE%\Local Settings\Application Data\Microsoft\Outlook\Extend.dat
      이 파일이 있으면 파일의 이름을 바꿉니다.
    서버와 동일한 이름의 하위 디렉터리로 이동하고 배치 파일을 하나씩 실행하여 사서함을 업데이트합니다. 배치 파일을 성공적으로 실행하려면 업데이트할 사서함에 대한 전체 사서함 액세스 및 다른 사람 이름으로 보내기 권한이 있는 계정을 사용해야 합니다.

Exchange 도구를 실행한 후에 수행할 작업

업데이트 설치

해당 환경에 있는 Exchange 서버를 모두 업데이트한 후 Exchange 서버에 다음 업데이트를 설치합니다.
926666 Exchange 2003 서비스 팩 2의 2007년 일광 절약 시간제 변경 사항에 대한 업데이트

알려진 문제

  • Outlook Web Access에서 만든 되풀이 모임이 Exchange 도구로 업데이트되지 않는다

    사서함을 업데이트하기 전에 기술 자료 문서 926666에서 설명하는 업데이트를 Exchange 서버에 설치하면 Outlook Web Access에서 만든 되풀이 모임이 Exchange 도구로 업데이트되지 않습니다. 이 문제를 해결하려면 업데이트 926666을 제거하고 Exchange 도구를 실행한 다음 업데이트 926666을 Exchange 서버에 다시 설치하십시오.
  • Exchange 도구를 실행한 후 Exchange 2007을 다시 시작해야 한다

    Exchange 도구를 실행한 후 Exchange 2007 Outlook Web Access에서 일정 항목을 올바르게 표시하려면 Exchange 서비스를 다시 시작해야 합니다.
  • Exchange 도구를 설치할 수 없다

    다음 레지스트리 키 중 하나가 있으면 Exchange 도구가 성공적으로 설치되지 않습니다.
    • HKEY_CLASS_ROOT\Outlook.Application.9
    • HKEY_CLASS_ROOT\Outlook.Application.10
    이 경우 Exchange 도구를 설치하려고 하면 다음과 유사한 내용의 오류 메시지가 나타납니다.
    Exchange Server Calendar Rebasing Tool은 이 버전의 Microsoft Outlook에 설치할 수 없습니다.
    이 문제를 해결하려면 이러한 레지스트리 키를 삭제하고 Exchange 도구를 설치한 다음 레지스트리 키를 복원하십시오.
  • 표준 시간대가 모호할 수 있다

    Outlook 2003이나 이전 버전의 Outlook을 통해 태평양 표준시(PST) 표준 시간대에서 DST 2006 규칙을 사용하여 만든 되풀이 일정 항목이 Outlook 도구로 업데이트되지 않습니다. Msextmz.exe에서 Outlook 도구를 실행하기 때문에 이 문제는 Msextmz.exe에 영향을 미칩니다.

    이 문제를 해결하려면 레지스트리를 변경하여 Msextmz.exe를 실행하는 컴퓨터에서 멕시코 표준 시간대를 제거하고 Msextmzcfg.exe를 업데이트 모드로 실행한 다음 레지스트리에서 멕시코 표준 시간대를 복원해야 합니다. 이렇게 하려면 다음과 같이 하십시오.

    경고 레지스트리 편집기나 다른 방법을 사용하여 레지스트리를 잘못 수정하면 심각한 문제가 발생할 수 있습니다. 이러한 문제를 해결하기 위해 운영 체제를 다시 설치해야 할 수도 있습니다. Microsoft는 이러한 문제의 해결을 보증하지 않습니다. 레지스트리 수정에 따른 모든 책임은 사용자에게 있습니다.
    1. 레지스트리를 백업합니다.
    2. 시작, 실행을 차례로 누르고 regedit를 입력한 다음 확인을 누릅니다.
    3. 다음 하위 키를 확장합니다.
      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Time Zones
    4. Mexico Standard Time을 마우스 오른쪽 단추로 누른 다음 삭제를 누릅니다.
    5. 키 삭제 확인 대화 상자에서 를 누릅니다.
    6. Mexico Standard Time 2를 마우스 오른쪽 단추로 누른 다음 삭제를 누릅니다.
    7. 키 삭제 확인 대화 상자에서 를 누릅니다.
    8. Msextmzcfg.exe를 업데이트 모드로 실행합니다.
    9. 1단계에서 만든 백업에서 레지스트리를 복원합니다.
    레지스트리 백업 및 복원 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    256986 Microsoft Windows 레지스트리 설명
  • 서버별로 처리할 수 있는 사서함 수에 제한이 있다

    사용자 목록 모드와 표준 시간대 추출 모드에서 Msextmz.exe는 서버에서 65,535개의 사서함만 처리할 수 있습니다. 서버에 있는 사서함 수가 65,535개를 넘으면 일부 사서함이 처리되지 않습니다.
  • 회의실 할당에 충돌이 발생할 수 있다

    Outlook 도구를 사용하면 모임이 올바른 시간으로 이동됩니다. 그러나 이 때문에 회의실 할당에 충돌이 발생할 수 있습니다.

    Exchange Server 2007을 실행하는 경우 Exchange 2007에서 리소스 예약 도우미의 충돌 한도를 3으로 설정하는 것이 좋습니다. 모든 사서함이 업데이트된 후 충돌이 자동으로 해결됩니다.

    직접 예약이나 자동 수락 에이전트를 사용하는 경우 다음 단계를 수행하여 리소스 사서함을 업데이트하십시오.

    직접 예약

    참고 다음 단계를 수행하려면 Microsoft Office Outlook용 표준 시간대 데이터 업데이트 도구(Tzmove.exe)의 최신 핫픽스를 다운로드해야 합니다.
    1. 리소스 사서함에 대해 Tzmove.exe(Outlook 도구)를 /FORCEREBASESUPPRESSALLUPDATES 명령줄 매개 변수와 함께 실행합니다.
    2. 다른 모든 사서함에 대해 Tzmove.exe를 일반 모드로 실행합니다.
    업데이트가 완료된 후 Outlook을 사용하여 리소스 사서함에 로그온하고 2단계에서 보낸 업데이트를 읽으면 해당 모임 업데이트가 리소스 사서함 일정에서 "미정"으로 나타납니다. 리소스 사서함에 로그온한 사용자가 없는 경우에는 1단계에서 업데이트된 원래 모임 요청이 리소스 사서함 일정에서 "수락"으로 나타납니다.

    FORCEREBASESUPPRESSALLUPDATES에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    933146 Microsoft Office Outlook용 표준 시간대 데이터 업데이트 도구의 핫픽스 패키지에 대한 설명


    자동 수락 에이전트
    1. 자동 수락 에이전트가 서버에서 실행 중인지 확인합니다.
    2. 클라이언트 컴퓨터에 일광 절약 시간제 업데이트를 설치합니다.
    3. 자동 수락 에이전트가 활성화된 리소스 사서함에 대해 Tzmove.exe(Outlook 도구)를 /FORCEREBASESUPPRESSALLUPDATES 명령줄 매개 변수와 함께 실행합니다.
    4. 자동 수락 에이전트가 실행 중인지 다시 확인합니다. 이러한 확인은 사용자가 자신이 구성한 업데이트된 모임에 대한 수락 메일을 받도록 하는 데 중요합니다.
    5. 다른 모든 사서함에 대해 Tzmove.exe를 일반 모드로 실행합니다.
  • 공용 폴더 일정

    Exchange 도구로 공용 폴더 일정이 업데이트되지 않습니다. 공용 폴더 일정을 업데이트하는 방법에 대한 자세한 내용은 Outlook 도구 설명서를 참조하십시오.
  • 명령줄에서 "Run As"를 사용해야 한다

    명령줄에서 “Run As”를 사용하여 Msextmz.exe를 실행하려면 “Run As”를 사용하여 PickLogonProfile 값을 레지스트리에서 설정하도록 레지스트리 편집기도 구성해야 합니다.
  • Msextmz.exe가 응답하지 않을 수 있다

    글로벌 카탈로그 서버의 문제로 인해 Msextmz.exe가 응답하지 않을 수 있습니다. 이러한 현상이 발생하면 다음과 같이 하십시오.
    1. Msextmz.exe를 중지합니다.
    2. Logfile 매개 변수가 Msextmz.ini에 설정되어 있는 경우 처리되고 있던 사서함을 찾습니다. 로그 파일의 Processing Mailbox 항목에 Msextmz.exe가 응답을 중지했을 때 처리되고 있던 사서함의 사용자 DN이 있습니다.

      Logfile 매개 변수가 Msextmz.ini에 설정되어 있지 않으면 Processing Mailbox 정보를 명령 프롬프트 창에서 찾을 수 있습니다.

      Msextmz.exe가 응답을 중지했을 때 처리되고 있던 사서함 뒤에 나오는 사용자 사서함이 모두 처리되지 않습니다. 이것은 해당 실행의 입력 파일로 사용된 ServerName_TimeZone_Input_File.txt의 사서함에도 적용됩니다.
    3. 처리되지 않은 사서함의 사용자 DN이 포함된 입력 파일을 새로 만듭니다.
    4. 이 새로운 입력 파일과 함께 Msextmz.exe를 다시 실행하기 전에 이전 실행에서 생성된 오류 파일의 사용자를 처리하도록 합니다.
  • Outlook 도구와 Exchange 도구를 동일한 환경에서 실행할 수 있다

    Outlook 도구와 Exchange 도구를 동일한 환경에서 실행할 수 있습니다. Outlook 도구로 이미 업데이트된 사서함에 대해 Exchange 도구를 실행하거나 그 반대로 실행해도 부작용이 발생하지 않습니다. 그러나 관리자가 Exchange 도구를 실행하는 경우 사용자가 별도로 Outlook 도구를 실행할 필요는 없습니다.
  • 미리 알림이 예상보다 늦게 나타난다

    Outlook에서 온라인 모드로 사서함에 연결한 적이 없는 경우 Exchange 도구로 업데이트된 사서함에 대한 모임 미리 알림 이외의 미리 알림이 업데이트되지 않습니다. 이러한 경우 미리 알림이 예상보다 한 시간 늦게 나타납니다.

    Outlook에서 온라인 모드로 연결한 적이 없는 경우 Outlook 표준 시간대 업데이트 도구에서 찾는 일정 약속에 대한 잘못된 미리 알림을 조정해야 합니다. Outlook에서 온라인 모드로 연결한 적이 없는 경우 미리 알림 검색 폴더가 사서함에 없으므로 Outlook 도구로 전자 메일 항목, 연락처 또는 다른 미리 알림이 업데이트되지 않습니다. 예를 들어, 나중에 추가 작업을 할 전자 메일 항목에 대한 미리 알림이나 미리 알림이 있는 작업 항목에 대한 미리 알림이 이 도구로 업데이트되지 않습니다.
  • 실행 시간이 길 수 있다

    Msextmz.exe는 단일 스레드로 실행됩니다. 따라서 많은 사서함에 대해 이 도구를 실행하면 몇 시간이 걸릴 수도 있습니다.

    Microsoft IT는 9개의 클라이언트를 사용하여 16시간 동안 약 53,000개의 사서함을 업데이트할 수 있었습니다. 이것은 클라이언트별로 분당 6.13개의 사서함을 업데이트하는 속도입니다. 모임 요청의 초대 대상자 수는 업데이트 모드의 실행 시간에 영향을 미치지 않습니다. 이는 클라이언트 입장에서 모임 요청을 한 사람에게 보내는 데 걸리는 시간과 모임 요청을 백 사람에게 보내는 데 걸리는 시간이 동일하기 때문입니다. 초대 대상자의 수가 모임 업데이트의 복사본 수에 영향을 미치지만, 이는 실행 시간의 문제가 아니라 메일 흐름의 문제입니다.

    모임 요청의 초대 대상자 수는 업데이트 모드의 실행 시간에 영향을 미치지 않습니다. 이는 클라이언트 입장에서 모임 요청을 한 사람에게 보내는 데 걸리는 시간과 모임 요청을 백 사람에게 보내는 데 걸리는 시간이 동일하기 때문입니다.

    초대 대상자의 수가 모임 업데이트의 복사본 수에 영향을 미치지만, 이는 실행 시간의 문제가 아니라 메일 흐름의 문제입니다.
  • 많은 사서함을 업데이트한 후 이벤트 로그 공간이 부족할 수 있다

    Tzmove.exe는 성공적인 각 업데이트에 대해 원본 TZMOVE EventID 32를 포함하는 정보 이벤트를 생성합니다. 이벤트가 많이 발생하면 응용 프로그램 로그가 디스크에 할당된 공간을 초과할 수 있습니다. 업데이트 모드에서 Msextmz.exe는 이러한 이벤트를 사용하여 Tzmove.exe의 성공적인 실행을 확인합니다. Msextmz.exe는 업데이트하려고 하는 사서함과 관련된 해당 Tzmove.exe 이벤트를 찾을 수 없으면 업데이트가 실패한 것으로 가정합니다. 따라서 Msextmz.exe는 error.txt 파일에 사서함 DN을 기록합니다. 이 문제를 방지하려면 이벤트 로그 크기를 최대로 설정하고 덮어쓰기를 허용하는 것이 좋습니다.
  • “Unable to install because previous versions of “Microsoft Exchange Calendar Update Tool” were detected. Please uninstall them and run this setup again.”

    Exchange 일정 업데이트 도구 버전 1.0을 이전에 설치한 경우 버전 2.0을 설치하기 전에 버전 1.0을 제거해야 합니다. 버전 1.0은 MSI 패키지 Msextmz.msi 및 Msextmzcfg.msi가 포함된 자동 압축 풀기 실행 프로그램으로 배포되었습니다. 버전 2.0을 설치하기 전에 두 패키지를 모두 제거해야 합니다. 버전 2.0을 설치할 때 여전히 문제가 발생하면 프로그램 추가/제거 도구를 사용하는 대신 *.msi 패키지를 사용하여 버전 1.0을 다시 설치하고 제거한 다음 컴퓨터를 다시 시작하고 버전 2.0을 설치하십시오. 다른 모든 방법으로 문제가 해결되지 않으면 *.msi 패키지에서 바이너리를 직접 추출하십시오.

오류 메시지 및 해결 방법

  • Unable find mailbox timezone:Error 0x80004005
    이 오류 메시지는 다음 문제 중 하나로 인해 발생할 수 있습니다.
    • 도구에서 해당 사용자의 사서함을 검색하여 표준 시간대 값을 찾지 못했습니다. 이 문제를 해결하려면 “ReadCalendarTimeZones=1”(인용 부호 제외)을 Msextmz.ini 파일에 추가함으로써 도구에서 되풀이 일정 항목을 검사하여 표준 시간대 정보를 찾게 하십시오. 마지막 실행에서 받은 오류 로그에 있는 DN을 사용하여 새 입력 파일을 만들 수 있습니다.
    • 잘못된 디렉터리에서 Tzmove.exe를 참조하고 있습니다. 이 문제를 해결하려면 다운로드한 설치 파일을 Msextmz가 있는 폴더에 추출하거나 사용 중인 워크스테이션에서 Tzmove.exe가 설치된 전체 경로를 포함하도록 Msextmz.ini를 업데이트하십시오.

      참고 Microsoft Office Outlook용 표준 시간대 데이터 업데이트 도구를 다운로드하는 경우 Tzmove.exe 파일이 실제 도구의 설치 관리자입니다. 이 설치 관리자를 참조하면 Msextmz를 실행할 때 오류가 발생합니다.
    • Msextmz를 실행하는 데 사용하는 계정에 전체 사서함 권한이 없고 올바른 Exchange 사용 권한이 위임되지 않았습니다. 이 문제를 해결하려면 Exchange Server 컴퓨터에서 “사서함 사용 권한 부여” 스크립트를 실행하십시오.
  • Unable to process mailbox /O=CONTOSO/OU=FIRST ADMINISTRATIVE GROUP/CN=RECIPIENTS/CN=TESTMB01 - 0x80004005
    legacyExchangeDN을 자세히 검토하고 필요한 경우 수정합니다. 정확한 값을 사용하려면 ADSIEdit를 사용하여 값을 복사하고 붙여 넣으십시오.
  • Unable open mailbox table for server /O=CompanyRoot/ OU=IT/cn=Configuration/cn=Servers/cn=EXCH01. Error 80040115
    이것은 RPC 오류입니다. legacyExchangeDN을 자세히 검토하고 필요한 경우 수정합니다.
    Please Select the Valid Server
    서버의 고유 이름(DN)이 필요합니다. DN은 다음과 유사합니다.
    ServerDN:/O=CompanyRoot/OU=IT/cn=Configuration/cn=Servers/cn=EXCH01
  • 응용 프로그램을 제대로 초기화하지 못했습니다(0xc0000135). 응용 프로그램을 마치려면 [확인]을 클릭하십시오.
    이 오류 메시지는 .NET Framework 2.0이 설치되어 있지 않기 때문에 발생합니다.
  • HrTestMailboxAccess:Unable Open mailbox - 0x8004011D.
    업데이트 작업 동안 이 오류 메시지가 나타나면 사용 중인 계정에 사서함에 대한 전체 액세스 권한이 없는 것입니다. 이 도구를 사용하여 사서함을 업데이트하려면 계정에 모든 사서함에 대한 전체 사서함 액세스 권한이 있어야 합니다.

    "Msextmz.exe에 대한 사용 권한 구성" 절에서 설명한 방법을 사용하여 적절한 사용 권한을 부여했는지 확인하십시오.

참조

"사서함 사용 권한 부여" 스크립트

Option Explicit ' For FileSystemObject Const ForReading = 1 Const ForWriting = 2 Const ForAppending = 8 Const TristateTrue = -1 Const TristateUseDefault = -2 Const TristateFalse = 0

'Permission Type: Allow or Deny Const ADS_ACETYPE_ACCESS_ALLOWED = &H0 Const ADS_ACETYPE_ACCESS_DENIED = &H1 Const ADS_ACETYPE_ACCESS_ALLOWED_OBJECT = &H5 Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6

Const ADS_ACEFLAG_INHERIT_ACE = &H2 Const ADS_ACEFLAG_NO_PROPAGATE_INHERIT_ACE = &H4 Const ADS_ACEFLAG_INHERIT_ONLY_ACE = &H8 Const ADS_ACEFLAG_INHERITED_ACE = &H10 Const ADS_ACEFLAG_VALID_INHERIT_FLAGS = &H1f Const ADS_ACEFLAG_SUCCESSFUL_ACCESS = &H40 Const ADS_ACEFLAG_FAILED_ACCESS = &H80

'Declare ADSI constants Const ADS_SCOPE_SUBTREE = 2 Const ADS_OPTION_SECURITY_MASK = 3 Const ADS_OPTION_REFERRALS	= 1 Const ADS_SECURITY_INFO_DACL = 4 Const ADS_CHASE_REFERRALS_NEVER = &h00 Const ADS_CHASE_REFERRALS_SUBORDINATE = &h20 Const ADS_CHASE_REFERRALS_EXTERNAL = &h40

'Microsoft Exchange Const EX_MB_SEND_AS_ACCESSMASK  = &H00100 Const EX_FULLMAILBOX_ACCESSMASK = 1 Const EX_MB_SEND_AS_GUID = "{AB721A54-1E2F-11D0-9819-00AA0040529B}"

'Application Parameter Index Const ARG_INDEX_MODE = 0 Const ARG_INDEX_USERNAME = 1 Const ARG_INDEX_FILENAME = 2 Const MIN_ARG = 1

Const MODE_INVALID = -1 Const MODE_ADD = 0 Const MODE_REMOVE = 1

Const ADD = "-ADD" Const REMOVE = "-REMOVE"

'Application Const String Const EMPTYSTRING = "" Const ERROR_FILENAME = "GrantMailboxPermission.err" Const OUTPUT_FILENAME = "GrantMailboxPermission.log" Dim OUTPUT_DELIMITER OUTPUT_DELIMITER = vbTab

'Logging file Dim objFSO Dim objfileError Dim objfileOutput Dim objfileImport Dim objconn Dim objCommand Dim rootDSE Dim sDomainContainer Dim sUserLDAPPath Dim objUser Dim objSDNTsecurity Dim objDACLNT Dim objDACLEX Dim objSDMailbox Dim fFMA Dim fSendAs Dim AccessTypeForFMA Dim AccessTypeForSendAS Dim fAddedFMA Dim fAddedSendAs Dim fRemovedFMA Dim fRemovedSendAs Dim sArraySplit Dim sOneRow Dim sGrantedUser Dim dArgCount Dim cScriptMode Dim dArgExpected Dim fOneError

On Error Resume Next 'Parameter Checking dArgCount = Wscript.Arguments.Count If (dArgCount < MIN_ARG) 	Then DisplaySyntax End If

cScriptMode = MODE_INVALID Select Case UCase(WScript.Arguments(ARG_INDEX_MODE)) 	Case ADD 		cScriptMode = MODE_ADD 		dArgExpected = ARG_INDEX_FILENAME + 1 	Case REMOVE 		cScriptMode = MODE_REMOVE 		dArgExpected = ARG_INDEX_MODE + 1 	Case Else 		cScriptMode = MODE_INVALID End Select

If (cScriptMode = MODE_INVALID Or dArgCount <> dArgExpected) Then 	DisplaySyntax End If

If (cScriptMode = MODE_ADD) Then 	sGrantedUser = WScript.Arguments(ARG_INDEX_USERNAME) 	If (IsValidUserName(sGrantedUser) = False) Then 		DisplaySyntax 	End If End If

CreateImportExportFiles

If (cScriptMode = MODE_ADD) Then 	err.Clear
	
	'Prepare LDAP connection 	Set objconn = CreateObject("ADODB.Connection") 	Set objCommand = CreateObject("ADODB.Command") 	objconn.Provider = "ADSDSOObject" 	objconn.Open "ADs Provider" 	If (err.number <> 0) Then 		WScript.StdOut.WriteLine("Failed to bind to Active Directory server, error:" & err.Description) 		objfileError.WriteLine("Failed to bind to Active Directory server, error:" & err.Description) 		WScript.Quit 	End If
		
	Set rootDSE = GetObject("LDAP://rootDSE") 	sDomainContainer = rootDSE.Get("defaultNamingContext") 	If (err.number <> 0) Then 		WScript.StdOut.WriteLine("Failed to find a Domain Container:" & err.Description) 		objfileError.WriteLine("Failed to find a Domain Container:" & err.Description) 		WScript.Quit 	End If
		
	Set objCommand.ActiveConnection = objconn

	Do While objfileImport.AtEndOfStream <> True 		fOneError = False 		sUserLDAPPath = EMPTYSTRING 		err.Clear

		sOneRow = Trim(objfileImport.ReadLine) 		If sOneRow <> EMPTYSTRING Then
		
		    sUserLDAPPath = GetLDAPPathFromLegacyDN(sOneRow) 		    If (err.number <> 0) Then		    	objfileError.WriteLine("Failed to get user's LDAP path from " & sOneRow) 		    	fOneError = True 		    	err.Clear 		    End If

		    If (fOneError = False) Then 		    	Set objUser = GetObject(sUserLDAPPath) 		    	If (err.number <> 0) Then 		    		objfileError.WriteLine("Failed to get user object from " & sUserLDAPPath) 		    		objfileError.WriteLine("Error: " & err.Description) 		    		fOneError = True err.Clear 		    	End If 		    End If
    	
		    If (fOneError = False) Then 			    Set objSDMailBox = objUser.MailboxRights 			    Set objDACLEX = objSDMailbox.DiscretionaryAcl 			    Set objSDNTsecurity = objUser.ntSecurityDescriptor 			    Set objDACLNT = objSDNTsecurity.DiscretionaryAcl 			    If (err.number <> 0) Then 				    objfileError.WriteLine("Failed to get DACL of " & sUserLDAPPath) 				    objfileError.WriteLine("Error: " & err.Description) 				    fOneError = True 				    err.Clear 			    End If 		    End If

		    ' Check Full Mailbox Access and Send As permission 		    fFMA = False 		    fSendAs = False 		    AccessTypeForFMA = ADS_ACETYPE_ACCESS_ALLOWED 		    AccessTypeForSendAS = ADS_ACETYPE_ACCESS_ALLOWED

		    If (fOneError = False) Then 			    CheckFullMailboxAccess objDACLEX, sGrantedUser, fFMA, AccessTypeForFMA 			    CheckSendAs objDACLNT, sGrantedUser, fSendAs, AccessTypeForSendAS 			    If (err.number <> 0) Then 			    	objfileError.WriteLine("Failed to Check permission of " & sUserLDAPPath) 			    	objfileError.WriteLine("Error: " & err.Description) 			    	fOneError = True 			    	err.Clear 			    End If 		    End If

		    'If we don't have either SendAS or FMA, we're going to add these permission 		    If ( (AccessTypeForFMA = ADS_ACETYPE_ACCESS_DENIED) Or (AccessTypeForSendAs = ADS_ACETYPE_ACCESS_DENIED_OBJECT) ) Then 		    	'Deny access already granted, won't add permission to this user 		    	objfileError.WriteLine("Deny permission already added: " & sUserLDAPPath) 		    	fOneError = True 		    End If
    		
		    If ( fOneError = False And ((fFMA = False) Or (fSendAs = False)) ) Then 		    	fAddedFMA = False 		    	fAddedSendAs = False
    			
			    If (fFMA = False) Then 			    	'Add FMA permission 			    	err.Clear 			    	AddAce objDACLEX, sGrantedUser, EX_FULLMAILBOX_ACCESSMASK, ADS_ACETYPE_ACCESS_ALLOWED, ADS_ACEFLAG_INHERIT_ACE, 0,0,0 			    	objSDMailbox.DiscretionaryAcl = objDACLEX 			    	objUser.MailboxRights = Array(objSDMailbox) 			    	If ( err.number <> 0 ) Then 			    		objfileError.WriteLine("Failed to add FullMailbox Access: " & sUserLDAPPath) 			    		objfileError.WriteLine("Error: " & err.Description) 			    		fOneError = True 			    		fAddedFMA = False 			    		err.Clear 			    	Else 			    		fAddedFMA = True 			    	End If 			    End If
    			
			    If (fSendAs = False) Then 			    	'Add SendAs permission 			    	err.Clear 			    	AddAce objDACLNT, sGrantedUser, EX_MB_SEND_AS_ACCESSMASK, ADS_ACETYPE_ACCESS_ALLOWED_OBJECT, 0,1, EX_MB_SEND_AS_GUID, 0 			    	objSDNTsecurity.DiscretionaryAcl = objDACLNT 			    	objUser.Put "ntSecurityDescriptor", Array( objSDNTsecurity ) 			    	objUser.SetOption ADS_OPTION_SECURITY_MASK, ADS_SECURITY_INFO_DACL 			    	If ( err.number <> 0 ) Then 			    		objfileError.WriteLine("Failed to add SendAs permission: " & sUserLDAPPath) 			    		objfileError.WriteLine("Error: " & err.Description) 			    		fOneError = True 			    		fAddedSendAs = False 			    		err.Clear 			    	Else 			    		fAddedSendAs = True 			    	End If 			    End If

			    If (fOneError = False ) Then 			    	objUser.SetInfo 			    	If (err.number <> 0) Then 			    		objfileError.WriteLine("Failed to update user: " & sUserLDAPPath) 			    		objfileError.WriteLine("Error: " & err.Description) 			    		fOneError = True 			    		err.Clear 			    	Else 			    		'Update Logging 			    		objfileOutput.WriteLine(sUserLDAPPath & OUTPUT_DELIMITER & fAddedFMA & OUTPUT_DELIMITER & fAddedSendAs) 			    	End If 			    End If 		    End If

		    Set objUser = Nothing 		    Set objSDNTsecurity = Nothing 		    Set objDACLNT = Nothing 		    Set objDACLEX = Nothing 		    Set objSDMailBox = Nothing

		    If (fOneError = True) Then 		    	WScript.StdOut.Write("!") 		    Else 		    	WScript.StdOut.Write(".") 		    End If 	End If 	Loop

Set rootDSE = Nothing Set objCommand = Nothing Set objconn = Nothing

End If 

If (cScriptMode = MODE_REMOVE) Then 	'Retreive the granted user from the first line of import file 	sGrantedUser = objfileImport.ReadLine 	If (IsValidUserName(sGrantedUser) = False) Then 		WScript.StdOut.WriteLine("Invalid User in import file. please check import file..") 		objfileError.WriteLine("Invalid User in import file. please check import file..") 		WScript.Quit 	End If
	
	Do While objfileImport.AtEndOfStream <> True 		fOneError = False 		sUserLDAPPath = EMPTYSTRING 		fAddedFMA = False 		fAddedSendAs = False 		fRemovedFMA = False 		fRemovedSendAs = False 		err.Clear

		sOneRow = objfileImport.ReadLine 		sArraySplit = Split(sOneRow, OUTPUT_DELIMITER)

		'First column is Ldap path 		sUserLDAPPath = sArraySplit(0) 		'Second column is FullMailbox Permission 		fAddedFMA = sArraySplit(1) 		'Third column is SendAs 		fAddedSendAs = sArraySplit(2)

		Set objUser = GetObject(sUserLDAPPath) 		If (err.number <> 0) Then 			objfileError.WriteLine("Failed to get user object from " & sUserLDAPPath) 			objfileError.WriteLine("Error: " & err.Description) 			fOneError = True 			err.Clear 		End If
		
		If ((fOneError = False) And (fAddedFMA = "True")) Then 			Set objSDMailBox = objUser.MailboxRights 			Set objDACLEX = objSDMailbox.DiscretionaryAcl 			fRemovedFMA = RemoveFullMailboxAccess(objDACLEX, sGrantedUser) 			If (err.number <> 0) Then 				objfileError.WriteLine("Failed to Remove Full MailboxAccess from " & sUserLDAPPath) 				objfileError.WriteLine("Error: " & err.Description) 				fOneError = True 				err.Clear 			End If
			
			If (fRemovedFMA = False) Then 					objfileError.WriteLine("Couldn't find Full mailbox access permission on " & sUserLDAPPath) 			End If
			
			If ((fOneError = False) And (fRemovedFMA = True)) Then 				objSDMailbox.DiscretionaryAcl = objDACLEX 				objUser.MailboxRights = Array(objSDMailbox) 			End If 		End If

		If ((fOneError = False) And (fAddedSendAs = "True")) Then 			Set objSDNTsecurity = objUser.ntSecurityDescriptor 			Set objDACLNT = objSDNTsecurity.DiscretionaryAcl

			fRemovedSendAs = RemoveSendAs(objDACLNT, sGrantedUser) 			If (err.number <> 0) Then 				objfileError.WriteLine("Failed to Remove SendAs from " & sUserLDAPPath) 				objfileError.WriteLine("Error: " & err.Description) 				fOneError = True 				err.Clear 			End If

			If (fRemovedSendAs = False) Then 				objfileError.WriteLine("Couldn't find SendAs permission on " & sUserLDAPPath) 			End If
			
			If ((fOneError = False) And (fRemovedSendAs = True)) Then 				objSDNTsecurity.DiscretionaryAcl = objDACLNT 				objUser.Put "ntSecurityDescriptor", Array( objSDNTsecurity ) 				objUser.SetOption ADS_OPTION_SECURITY_MASK, ADS_SECURITY_INFO_DACL 			End If 		End If

		If ((fOneError = False) And (fRemovedFMA Or fRemovedSendAs)) Then 			objUser.SetInfo 			If (err.number <> 0) Then 				objfileError.WriteLine("Failed to update ADSI for user: " & sUserLDAPPath) 				objfileError.WriteLine("Error: " & err.Description) 				fOneError = True 				err.Clear 			Else 				If ( fRemovedFMA Or fRemovedSendAs ) Then 					'Update Logging 					objfileError.WriteLine("Removed Permission from " & sUserLDAPPath & OUTPUT_DELIMITER & fRemovedFMA & OUTPUT_DELIMITER & fRemovedSendAs) 				End If 			End If 		End If

		If (fOneError = True) Then 			WScript.StdOut.Write("!") 		Else 			WScript.StdOut.Write(".") 		End If 	Loop End If

CloseImportexportFiles

Function IsValidUserName (sUserName) 	Dim dPosition dPosition = InStr(1, sUserName, "\") 	If (dPosition = 0 ) Then 		IsValidUserName = False 		objfileError.WriteLine("Invalid User:" & sUserName) 	Else 		IsValidUserName = True 	End If End Function

Function CheckSendAs (objNTSD, sUser, fSendAs, AccessType) 	Dim intACECount Dim objACE
	
	err.Clear 	fSendAs = False 	AccessType = ADS_ACETYPE_ACCESS_ALLOWED 	intACECount = objNTSD.AceCount

	If intACECount Then 		For Each objACE In objNTSD 			err.Clear 			If ( (UCase(objACE.Trustee) = UCase(sUser)) And (objACE.ObjectType = EX_MB_SEND_AS_GUID) ) Then 				fSendAs = True 				AccessType = objACE.AceType 			End If 		Next 	End If	

	If (err.number <> 0) Then 		objfileError.WriteLine("Check SendAs permissions Failed : " & sUser) 		objfileError.WriteLine("Error: " & err.Description) 		err.Clear 		fOneError = True 	End If 	Set objACE = Nothing End Function

Function CheckFullMailboxAccess (objACL, sUser, fFoundFMA, AccessType) 	Dim intACECount 	Dim objACE

	err.Clear 	fFoundFMA = False 	AccessType = ADS_ACETYPE_ACCESS_ALLOWED 	intACECount = objACL.AceCount 	If intACECount Then 		For Each objACE In objACL 			If ( (UCase(objACE.Trustee) = UCase(sUser)) And ((objACE.AccessMask And EX_FULLMAILBOX_ACCESSMASK) <> 0)) Then 				fFoundFMA = True 				AccessType = objACE.AceType 			End If 		Next 	End If

	If (err.number <> 0) Then 		objfileError.WriteLine("Check FullMailbox permissions Failed : " & sUser) 		objfileError.WriteLine("Error: " & err.Description) 		err.Clear 		fOneError = True 	End If 	Set ObjACE = Nothing End Function

Function RemoveSendAs (objNTSD, sUser) 	Dim intACECount 	Dim objACE Dim fFound
	
	fFound = False 	intACECount = objNTSD.AceCount
	
	If intACECount Then 		For Each objACE In objNTSD 			If ((UCase(objACE.Trustee) = UCase(sUser)) And (objACE.ObjectType = EX_MB_SEND_AS_GUID) ) Then 				objNTSD.RemoveAce objACE 				fFound = True 			End If 		Next 	End If

	RemoveSendAs = fFound End Function

Function RemoveFullMailboxAccess (objACL, sUser) 	Dim intACECount 	Dim objACE 	Dim fFound
	
	fFound = False 	intACECount = objACL.AceCount
	
	If intACECount Then 		For Each objACE In objACL 			If((0 <> Instr(UCase(objACE.Trustee), UCase(sUser))) And (objACE.AccessMask And EX_FULLMAILBOX_ACCESSMASK) <> 0) Then 				objACE.AccessMask = (objACE.AccessMask Xor EX_FULLMAILBOX_ACCESSMASK) 				fFound = True 			End If 		Next 	End If

	RemoveFullMailboxAccess = fFound End Function

Function GetLDAPPathFromLegacyDN (sLegacyDN) 	Dim rsUsers 	Dim sLdapPath
	
	objCommand.CommandText = "<GC://" & sDomainContainer & ">;(&(&(& (mailnickname=*) (| (&(objectCategory=person)(objectClass=user)(legacyExchangeDN=" & sLegacyDN & ")) ))));adspath;subtree" 	objCommand.Properties("searchscope") = ADS_SCOPE_SUBTREE 	objCommand.Properties("Page Size") = 10 	objCommand.Properties("Timeout") = 30 	objCommand.Properties("Chase referrals") = (ADS_CHASE_REFERRALS_SUBORDINATE Or ADS_CHASE_REFERRALS_EXTERNAL)

	err.Clear 	Set rsUsers = objCommand.Execute 	If (err.number <> 0) Then 		objfileError.WriteLine("Search for mailbox owners failed, error:" & err.Description) 		fOneError = True 	End If
	
	If (rsUsers.RecordCount = 0) Then 		objfileError.WriteLine("No mailbox owner user accounts found for " & sLegacyDN & " in " & sDomainContainer & ".") 		fOneError = True 	End If

	If (rsUsers.RecordCount > 1) Then 		objfileError.WriteLine("Multiple mailboxs owner user accounts found for " & sLegacyDN & " in " & sDomainContainer & ".") 		fOneError = True 	End If

	sLdapPath = Replace(rsUsers.Fields(0).Value, "GC://", "LDAP://") 	GetLDAPPathFromLegacyDN = sLdapPath 	Set rsUsers = Nothing End Function

Function CloseImportexportFiles

	objfileError.WriteLine("*******************************************************") 	objfileError.WriteLine("End at " & Date & " " & Time) 	objfileError.WriteLine("*******************************************************")

	objFSO.Close 	objfileError.Close 	objfileOutput.Close 	bjfileImport.Close
	
	Set objFSO = Nothing 	Set objfileError = Nothing 	Set objfileOutput = Nothing 	Set objfileImport = Nothing End Function

Function CreateImportExportFiles 	Dim sErrorsFileName 	Dim sImportFileName 	Dim sOutputFileName

	err.Clear 	Set objFSO = CreateObject("Scripting.FileSystemObject") 	sErrorsFileName = ERROR_FILENAME 	sImportFileName = EMPTYSTRING 	sOutputFileName = EMPTYSTRING

	Select Case cScriptMode 		Case MODE_ADD 			sImportFileName = WScript.Arguments(ARG_INDEX_FILENAME) 			sOutputFileName = OUTPUT_FILENAME 		Case MODE_REMOVE 			sImportFileName = OUTPUT_FILENAME 'Use output file name as import file 			sOutputFileName = EMPTYSTRING 		Case Else 			DisplaySyntax 	End Select

	Set objfileError = objFSO.OpenTextFile(sErrorsFileName, ForAppending, True, TristateTrue) 	objfileError.WriteLine("*******************************************************") 	objfileError.WriteLine("Start at " & Date & " " & Time) 	objfileError.WriteLine("*******************************************************")

	If (cScriptMode = MODE_REMOVE) Then 		Set objfileImport = objFSO.OpenTextFile(sImportFileName, ForReading, False, TristateTrue) 	Else 		Set objfileImport = objFSO.OpenTextFile(sImportFileName, ForReading, False, TristateFalse) 	End If

	If (sOutputFileName <> EMPTYSTRING) Then 		'Check if output file already exists. 		If (objFSO.FileExists(sOutputFileName)) Then 			Set objfileOutput = objFSO.OpenTextFile(sOutputFileName, ForReading, False, TristateTrue) 			sOneRow = objfileOutput.ReadLine 			'If user name in the file is different from parameter, we can't proceed. 			If ( sOneRow <> sGrantedUser ) Then 				WScript.StdOut.WriteLine("The Domain\User must be the same as " & sOneRow ) 				WScript.Quit 			End If 			Set objfileOutput = objFSO.OpenTextFile(sOutputFileName, ForAppending, True, TristateTrue) 		Else 			Set objfileOutput = objFSO.OpenTextFile(sOutputFileName, ForWriting, True, TristateTrue) 			'The first line of Log file is the user who is going to be granted the permissions 			objfileOutput.WriteLine(sGrantedUser) 		End If 	End If
	
	If (err.number <> 0) Then 		WScript.StdOut.WriteLine("Failed to open Log file, error:" & err.Description) 		WScript.Quit 	End If End Function

Function AddAce(dacl, TrusteeName, gAccessMask, gAceType, gAceFlags, gFlags, gObjectType, gInheritedObjectType) 	Dim Ace1
	
	Set Ace1 = CreateObject("AccessControlEntry") 	Ace1.AccessMask = gAccessMask 	Ace1.AceType = gAceType 	Ace1.AceFlags = gAceFlags 	Ace1.Flags = gFlags 	Ace1.Trustee = TrusteeName 	'Determine whether ObjectType has to be set 	If CStr(gObjectType) <> "0" Then 		Ace1.ObjectType = gObjectType 	End If

	'Determine whether InheritedObjectType has to be set. 	If CStr(gInheritedObjectType) <> "0" Then 		Ace1.InheritedObjectType = gInheritedObjectType 	End If 	dacl.AddAce Ace1

    Set Ace1 = Nothing End Function

Function DisplaySyntax 	WScript.StdOut.WriteLine("Syntax:") 	WScript.StdOut.WriteLine() 	WScript.StdOut.WriteLine("Grant Full mailbox access and SendAs permission to USER based on IMPORT_FILE:") 	WScript.StdOut.WriteLine("    CSCRIPT " & 	WScript.ScriptName & " -Add DOMAIN\USER IMPORT_FILE") 	WScript.StdOut.WriteLine("    NOTE: """ & OUTPUT_FILENAME & """ will be created for -Remove option ") 	WScript.StdOut.WriteLine() 	WScript.StdOut.WriteLine("Remove Full mailbox access and SendAs permission based on " & OUTPUT_FILENAME & ":") 	WScript.StdOut.WriteLine("    CSCRIPT """ & 	WScript.ScriptName & """ -Remove ") 	WScript.StdOut.WriteLine() 	WScript.StdOut.WriteLine("For all modes, errors are saved to " & ERROR_FILENAME )

	WScript.Quit End Function

수정 내역

표 축소표 확대
버전날짜변경 내용
1.02007-01-11원래 버전
2.02007-01-12편집상의 변경
3.02007-02-07완전한 문서 재작성
3.12007-02-08다운로드 센터 URL 업데이트
3.22007-02-08편집상의 변경
4.02007-02-09회의실 충돌에 대한 새로운 정보 추가
4.12007-02-12“본 문서의 정보는 다음의 제품에 적용됩니다.” 절에 Exchange 2003 Enterprise Edition 추가
4.22007-02-12인쇄상 오류 수정
4.32007-02-12참고에서 단계 번호 수정
5.02007-02-13"Exchange 도구를 설치하는 방법" 절에서 가상 컴퓨터 정보 추가
6.02007-02-15"미리 알림이 예상보다 늦게 나타난다" 절 재작성
7.02007-02-15Microsoft Exchange 일정 업데이트 도구 패키지용 가상 컴퓨터에 대한 다운로드 정보 추가
8.02007-02-16"Exchange 도구를 실행하기 전에 수행할 작업" 절에서 Exchange 시스템 관리 도구에 대한 정보 추가
8.12007-02-19“Msextmzcfg.exe를 실행하는 방법” 절에서 파일 이름 수정
8.22007-02-20"사서함 사용 권한 부여" 스크립트 절에서 User_Name과 File_Name 사이에 공백 추가
9.02007-02-20문서 재작성
10.02007-02-20내부 메타데이터 업데이트
10.12007-02-20인쇄상 오류 수정
10.22007-02-20인쇄상 오류 수정
10.32007-02-20인쇄상 오류 수정
10.42007-02-21인쇄상 오류 수정
11.02007-02-22Exchange 도구의 버전 2에 대한 정보 추가
11.12007-02-22인쇄상 오류 수정
11.22007-02-23문서 수정을 나타내는 표 추가
12.02007-02-26이벤트 로그 공간에 대한 정보 추가 및 오류 메시지 및 해당 오류의 해결 방법에 대한 정보 추가
13.02007-02-27가상 컴퓨터 정보의 다운로드 URL 제거 및 933185에 대한 상호 참조 추가
14.02007-02-28"알려진 문제" 절에서 기술 자료 문서 926666을 포함하도록 첫 번째 글머리 기호의 텍스트 변경
15.02007-02-27가상 컴퓨터 정보 추가
16.02007-02-28"직접 예약" 절에 Microsoft Office Outlook용 표준 시간대 데이터 업데이트 도구(Tzmove.exe)의 최신 핫픽스에 대한 정보 추가. 933146에 대한 상호 참조 추가
16.12007-02-28표 태그 수정
17.02007-03-01Exchange Server 5.5 정보 제거
표 축소표 확대
18.02007-03-08"HRTestMailboxAccess" 오류 메시지에 대한 정보 추가




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 930879 - 마지막 검토: 2007년 11월 26일 월요일 - 수정: 19.2
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Exchange Server 2007 Enterprise Edition
  • Microsoft Exchange Server 2007 Standard Edition
  • Microsoft Exchange Server 2003 Enterprise Edition
  • Microsoft Exchange Server 2003 Standard Edition
  • Microsoft Exchange 2000 Enterprise Server
  • Microsoft Exchange 2000 Server Standard Edition
키워드:?
kbhowto kbinfo kbexpertiseinter KB930879

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com