셸에서 RollAlternateserviceAccountCredential.ps1 스크립트 사용

적용 대상: Exchange Server 2013

Exchange Server 2013의 RollAlternateServiceAccountPassword.ps1 스크립트를 사용하여 대체 서비스 계정 자격 증명(ASA 자격 증명)을 업데이트하고 지정된 클라이언트 액세스 서버에 업데이트를 배포할 수 있습니다.

참고

Exchange 관리 셸은 스크립트를 자동으로 로드하지 않습니다. 모든 스크립트 앞에 .\ 를 입력해야 합니다. 예를 들어 RollAlternateServiceAccountPassword.ps1 스크립트를 실행하려면 를 입력합니다 .\RollAlternateServiceAccountPassword.ps1.

이 스크립트는 영어로만 제공됩니다.

스크립트를 사용하고 작성하는 방법에 대한 자세한 내용은 Exchange 관리 셸을 사용한 스크립팅을 참조하세요.

구문

RollAlternateServiceAccountPassword.ps1 -Scope <Object> -Identity <Object> -Source <Object> -

자세한 정보

이러한 절차를 수행하려면 먼저 사용 권한을 할당받아야 합니다. 필요한 권한을 보려면 클라이언트 액세스 권한 항목의 "클라이언트 액세스 보안" 항목을 참조하세요.

대체 서비스 계정 자격 증명 스크립트의 기술 세부 정보

이 스크립트는 ASA 자격 증명의 설정 및 유지 관리를 용이하게 합니다. ASA 자격 증명을 만들고 적절한 서비스 원칙 이름을 설정한 후에는 스크립트를 사용하여 모든 대상 클라이언트 액세스 서버에 자격 증명을 배포할 수 있습니다.

스크립트를 사용하려면 대상으로 지정할 서버와 ASA 자격 증명으로 사용할 자격 증명을 식별해야 합니다.

서버 범위

스크립트가 포리스트의 모든 클라이언트 액세스 서버, 특정 클라이언트 액세스 서버 배열의 모든 멤버 또는 특정 서버를 대상으로 지정하도록 선택할 수 있습니다. 사용 가능한 매개 변수는 ToEntireForest, ToArraryMembersToSpecificServers입니다. 스크립트를 특정 서버 또는 특정 서버 배열의 멤버로 대상으로 지정하는 경우 대상으로 지정할 서버 또는 서버 배열 이름으로 Identity 매개 변수를 지정해야 합니다.

자격 증명 원본

스크립트는 기존 서버에서 대체 서비스 계정 암호를 복사할 수 있습니다. 또는 사용할 계정을 지정하고 스크립트에서 계정에 대한 새 암호를 생성하도록 할 수 있습니다. 사용 가능한 매개 변수는 GenerateNewPasswordForCopyFrom입니다. GenerateNewPasswordFor 매개 변수를 사용하려면 도메인\계정 이름 형식으로 계정 문자열을 지정해야 합니다. 컴퓨터 계정을 사용하는 경우 계정 이름 끝에 "$"를 추가해야 합니다(예: CONTOSO\ClientServerAcct$). CopyFrom 매개 변수는 기존 클라이언트 액세스 서버의 이름을 자격 증명 원본으로 사용합니다.

자격 증명에 대한 새 암호 생성

암호는 스크립트에 의해 만들어집니다. 사용자 입력이 필요하지 않습니다. 스크립트는 모든 대상 컴퓨터에 암호를 배포한 다음 새로 생성된 암호로 Active Directory 계정 자격 증명을 업데이트하려고 시도합니다.

새로 생성된 암호는 73자이며 표준 강력한 암호 요구 사항을 충족합니다. 암호 요구 사항이 다른 경우 암호를 수동으로 설정한 다음 대상 서버에 복사해야 할 수 있습니다.

서비스 중단을 방지하기 위해 스크립트는 각 클라이언트 액세스 서버를 검사하고 새 암호를 추가하는 것 외에도 현재 암호를 유지 관리합니다. 스크립트가 실행되면 공유 ASA 자격 증명은 Active Directory에 저장된 현재 암호 또는 Active Directory에 아직 설정되지 않은 새 암호 중 하나를 사용할 수 있습니다.

만료된 암호와 같이 더 이상 유효하지 않은 모든 암호는 대상 서버에서 제거됩니다. Active Directory의 암호를 변경할 수 없는 경우 암호가 만료되었기 때문에 스크립트에서 암호 재설정을 시도합니다. 이렇게 하려면 스크립트를 실행하는 계정에 대체 서비스 계정이 컴퓨터 계정인지 아니면 사용자 계정인지에 따라 Active Directory 컴퓨터 계정 암호 또는 사용자 계정 암호를 재설정할 수 있는 권한이 있어야 합니다.

모든 대상 클라이언트 액세스 서버에 대해 암호가 성공적으로 변경되지 않으면 Active Directory 암호를 업데이트하면 인증 오류가 발생할 수 있습니다. 스크립트가 무인 모드로 실행되는 경우 모든 대상 클라이언트 액세스 서버가 성공적으로 업데이트되지 않는 한 새 암호로 Active Directory 암호를 업데이트하지 않습니다. 스크립트가 참석 모드로 실행되는 경우 Active Directory에서 암호를 업데이트할지 묻는 메시지가 표시됩니다.

암호 유지 관리를 자동화하는 예약된 작업 만들기

스크립트가 지속적으로 암호를 유지 관리하는 예약된 작업을 만들려면 CreateScheduledTask 매개 변수를 사용합니다. 이 매개 변수에는 만들려는 작업의 이름에 대한 문자열이 필요합니다.

참고

무인 예약된 작업을 만들기 전에 스크립트를 실행하고 참석 모드에서 올바르게 작동하는지 확인합니다.

스크립트는 스크립트가 있는 폴더에 .cmd 파일을 만듭니다. 그런 다음 3주마다 해당 .cmd 파일을 실행하는 작업을 만듭니다. 예를 들어 Windows 작업 스케줄러를 사용하여 예약된 작업을 수정하여 더 많거나 적게 실행되도록 설정할 수 있습니다. 기본적으로 작업은 현재 로그온한 사용자로 실행됩니다. 또한 스크립트는 사용자가 컴퓨터에 로그온한 경우에만 실행됩니다. 사용자가 로그온되었는지 여부에 관계없이 실행되도록 예약된 작업을 수정하는 것이 좋습니다. 해당 계정에 암호를 재설정할 수 있는 Active Directory 권한과 Exchange Enterprise 관리자 역할이 있는 경우 다른 계정으로 실행하도록 선택할 수도 있습니다. 예약된 작업을 만들 때 스크립트는 무인 모드에서 자동으로 실행됩니다.

스크립트 범위를 벗어난 작업

스크립트는 ASA 자격 증명의 SPN을 관리하지 않거나 서버에서 대체 서비스 계정을 제거할 수 없습니다. 서버에서 대체 서비스 계정을 제거하려면 부하 분산된 클라이언트 액세스 서버에 대한 Kerberos 인증 구성의 Kerberos 인증해제 섹션을 참조하세요.

스크립트 문제 해결

무인 예약된 작업을 만들기 전에 스크립트를 실행하고 참석 모드에서 올바르게 작동하는지 확인하는 것이 좋습니다. 문제 해결 정보는 RollAlternateServiceAccountCredential.ps1 스크립트 문제 해결을 참조하세요.

스크립트 유효성 검사

-verbose 플래그를 사용하여 대화형으로 실행할 때 스크립트의 출력은 성공한 스크립트 작업을 나타냅니다. 클라이언트 액세스 서버가 업데이트되었는지 확인하려면 ASA 자격 증명에서 마지막으로 수정된 타임스탬프를 확인할 수 있습니다. 다음 예제에서는 클라이언트 액세스 서버 목록과 대체 서비스 계정이 마지막으로 업데이트된 시간을 생성합니다.

Get-ClientAccessServer -IncludeAlternateServiceAccountCredentialstatus |Fl Name, AlternateServiceAccountConfiguration

스크립트가 실행되는 컴퓨터에서 이벤트 로그를 검사할 수도 있습니다. 스크립트에 대한 이벤트 로그 항목은 애플리케이션 이벤트 로그에 있으며 원본 MSExchange 관리 애플리케이션에서 가져옵니다. 다음 표에서는 기록된 이벤트와 이벤트의 의미를 나열합니다.

이벤트 ID 및 해당 설명 스크립트

이벤트 설명
14001 시작
14002 성공(정보)
14003 성공했지만 경고가 있습니다.

스크립트에 몇 가지 문제가 발생했지만 이를 극복할 수 있었습니다. 또는 사용자 입력이 필요하지 않음을 확인했습니다. 스크립트가 대화형 모드로 실행 중인 경우 스크립트 출력에서 추가 경고 세부 정보를 읽어보세요.
14004 실패

스크립트가 예약된 작업으로 실행되는 경우 해당 결과는 RollAlternateServiceAccountPassword라는 하위 폴더의 Exchange 서버 로깅 폴더에 기록됩니다.

로그를 사용하여 작업이 성공적으로 실행되었는지 확인할 수 있습니다.

매개 변수

매개 변수 필수 설명
ToEntireForest 옵션 ToEntireForest 매개 변수는 포리스트의 모든 클라이언트 액세스 서버에 스크립트를 대상으로 합니다.
ToArrayMembers 선택 ToArrayMembers 매개 변수는 스크립트를 특정 클라이언트 액세스 서버 배열의 모든 멤버로 대상으로 지정합니다.

참고: ToArrayMembers 매개 변수 또는 ToSpecificServers 매개 변수를 사용하는 경우 Identity 매개 변수를 사용하여 서버 이름 또는 서버 배열 이름을 지정해야 합니다.
ToSpecificServers 선택 ToSpecificServers 매개 변수는 스크립트를 특정 서버로 대상으로 지정합니다.

참고: ToArrayMembers 매개 변수 또는 ToSpecificServers 매개 변수를 사용하는 경우 Identity 매개 변수를 사용하여 서버 이름 또는 서버 배열 이름을 지정해야 합니다.
Identity 필수 Identity 매개 변수는 클라이언트 액세스 서버 배열의 이름 또는 대상으로 지정하는 특정 서버의 이름을 지정합니다.
GenerateNewPasswordFor<String> 옵션 GenerateNewPasswordFor 매개 변수는 스크립트가 ASA에 대한 새 암호를 생성해야 한다고 지정합니다. 문자열 값은 DOMAIN\Account Name 형식의 ASA 계정이어야 합니다. 컴퓨터 계정을 사용하는 경우 계정 이름 끝에 $ 문자를 추가해야 합니다.
CopyFrom<문자열> 옵션 CopyFrom 매개 변수는 자격 증명이 다른 클라이언트 액세스 서버에서 복사되도록 지정합니다. 지정된 문자열 값은 클라이언트 액세스 서버의 이름입니다.
모드 선택 모드 스위치는 스크립트가 참석 모드 또는 무인 모드에서 실행되는지 여부를 지정합니다. 무인 모드는 사용자 입력을 묻는 메시지를 표시하지 않으며 필요한 경우 보다 보수적인 옵션을 자동으로 선택합니다.
CreateScheduledTask<문자열> 선택 CreateScheduledTask 매개 변수는 ASA 자격 증명 업데이트를 수행하기 위해 예약된 작업을 만들도록 스크립트에 지시합니다. 문자열 값은 만들어질 예약된 작업의 이름입니다.

참고: 이 스크립트는 스크립트가 있는 폴더에 .cmd 파일을 만듭니다. 예약된 작업은 3주에 한 번씩 .cmd 파일을 실행합니다. Windows 작업 스케줄러에서 직접 작업을 편집하여 작업의 빈도를 변경할 수 있습니다.
Whatif 옵션 WhatIf 스위치는 명령에 개체에 대해 수행할 작업을 시뮬레이션하도록 지시합니다. WhatIf 스위치를 사용하면 이러한 변경 내용을 적용하지 않고도 변경 내용이 발생하는 것을 볼 수 있습니다. WhatIf 스위치를 사용하여 값을 지정할 필요가 없습니다.
확인 옵션 Confirm 스위치는 명령이 처리를 일시 중지하도록 하고 처리를 계속하기 전에 명령이 어떤 작업을 수행하는지 사용자가 확인하도록 합니다. Confirm 스위치를 사용하여 값을 지정할 필요가 없습니다.
Verbose 선택 Verbose 매개 변수는 스크립트의 작업에 대한 추가 정보가 로그 파일에 기록되도록 스크립트에 자세한 로깅을 수행하도록 지시합니다.
디버그 옵션 디버그 매개 변수는 디버깅 모드에서 실행하도록 스크립트에 지시합니다. 이 매개 변수를 사용하여 스크립트가 실패하는 이유를 확인해야 합니다.

예제

예 1

이 예제에서는 스크립트를 사용하여 처음 설치하기 위해 포리스트의 모든 클라이언트 액세스 서버에 자격 증명을 푸시합니다.

.\RollAlternateserviceAccountPassword.ps1 -ToEntireForest -GenerateNewPasswordFor "Contoso\ComputerAccount$" -Verbose

예 2

다음은 사용자 계정 ASA 자격 증명에 대한 새 암호를 생성하고 이름이 *mailbox*와 일치하는 클라이언트 액세스 서버 배열의 모든 멤버에게 암호를 배포하는 예제입니다.

.\RollAlternateserviceAccountPassword.ps1 -ToArrayMembers _mailbox_ -GenerateNewPasswordFor "Contoso\UserAccount" -Verbose

예 3

이 예제에서는 "Exchange-RollAsa"라는 한 달에 한 번 자동화된 암호 롤 예약 작업을 예약합니다. 전체 포리스트의 모든 클라이언트 액세스 서버에 대한 ASA 자격 증명을 스크립트로 생성된 새 암호로 업데이트합니다. 예약된 작업이 만들어지지만 스크립트가 실행되지 않습니다. 예약된 작업이 실행되면 스크립트는 무인 모드로 실행됩니다.

.\RollAlternateServiceAccountPassword.ps1 -CreateScheduledTask "Exchange-RollAsa" -ToEntireForest -GenerateNewPasswordFor 'contoso\computerAccount$'

예 4

다음은 CAS01이라는 클라이언트 액세스 서버 배열의 모든 클라이언트 액세스 서버에 대한 ASA 자격 증명을 업데이트하는 예제입니다. Contoso 도메인의 Active Directory 컴퓨터 계정 ServiceAc1에서 자격 증명을 가져옵니다.

.\RollAlternateserviceAccountPassword.ps1 -ToArrayMembers "CAS01" -GenerateNewPasswordFor "CONTOSO\ServiceAc1$"

예 5

이 예제에서는 서버 배열의 크기를 늘리거나 유지 관리 후 배열 멤버를 다시 도입하기 때문에 스크립트를 사용하여 새 컴퓨터 또는 서비스로 다시 전환되는 컴퓨터에 ASA를 배포하는 방법을 보여줍니다.

클라이언트 액세스 서버가 트래픽을 수신하기 전에 ASA 자격 증명을 업데이트해야 합니다. 이미 올바르게 구성된 모든 클라이언트 액세스 서버에서 공유 ASA 자격 증명을 복사합니다. 예를 들어 서버 A에 현재 ASA 자격 증명이 있고 서버 B를 배열에 방금 추가한 경우 스크립트를 사용하여 서버 A에서 서버 B로 자격 증명(암호 포함)을 복사할 수 있습니다. 이 기능은 암호가 마지막으로 롤된 경우 서버 B가 다운되었거나 아직 배열의 멤버가 아닌 경우에 유용합니다.

.\RollAlternateServiceAccountPassword.ps1 -CopyFrom ServerA -ToSpecificServers ServerB -Verbose