이 문서에는 MFA(다단계 인증)를 사용하거나 사용하지 않고 Exchange Online PowerShell 모듈을 사용하여 Exchange Online PowerShell에 연결하는 방법에 대한 지침이 포함되어 있습니다.
팁
이 문서의 연결 지침은 클라우드 사서함이 없는 온-프레미스 전자 메일 환경의 클라우드 보호를 위해 Exchange Online Protection PowerShell에도 적용됩니다.
Exchange Online PowerShell 모듈은 최신 인증을 사용하여 Exchange Online PowerShell 및 보안 & 준수 PowerShell에 연결합니다. Exchange Online PowerShell 모듈에 대한 자세한 내용은 Exchange Online PowerShell 모듈 정보를 참조하세요.
자동화를 위해 Exchange Online PowerShell에 연결하려면 무인 스크립트에 대한 앱 전용 인증 및 Azure 관리 ID를 사용하여 Exchange Online PowerShell에 연결을 참조하세요.
C#에서 Exchange Online PowerShell에 연결하려면 C#을 사용하여 Exchange Online PowerShell에 연결을 참조하세요.
시작하기 전에 알아야 할 사항은 무엇인가요?
모듈 설치 및 사용에 대한 요구 사항은 Exchange Online PowerShell 모듈 설치 및 유지 관리에 설명되어 있습니다.
Exchange Online PowerShell V3 모듈의 REST API 연결에는 PowerShellGet 및 PackageManagement 모듈이 필요합니다. 자세한 내용은 Windows의 REST 기반 연결에 대한 PowerShellGet을 참조하세요.
연결한 후 RBAC(역할 기반 액세스 제어)는 액세스 권한이 있거나 없는 cmdlet 및 매개 변수를 제어합니다. 자세한 내용은 Exchange Online의 사용 권한을 참조하세요.
특정 Exchange Online cmdlet 실행에 필요한 사용 권한을 찾으려면 Exchange cmdlet 실행에 필요한 사용 권한 찾기를 참조하세요.
1단계: Exchange Online PowerShell 모듈 로드
참고
모듈이 이미 설치된 경우 일반적으로 이 단계를 건너뛰고 먼저 모듈을 수동으로 로드하지 않고 Connect-ExchangeOnline 을 실행할 수 있습니다.
모듈을 설치한 후 PowerShell 창을 열고 다음 명령을 실행하여 모듈을 로드합니다.
Import-Module ExchangeOnlineManagement
2단계: 연결 및 인증
참고
연결하는 데 사용한 계정의 프로필 경로에 특수 PowerShell 문자(예 $
: )가 포함된 경우 연결 명령이 실패할 수 있습니다. 해결 방법은 프로필 경로에 특수 문자가 없는 다른 계정을 사용하여 연결하는 것입니다.
실행해야 하는 명령은 다음 구문을 사용합니다.
Connect-ExchangeOnline [-UserPrincipalName <UPN>] [-ExchangeEnvironmentName <Value>] [-ShowBanner:$false] [-LoadCmdletHelp] [-DelegatedOrganization <String>] [-SkipLoadingFormatData] [-DisableWAM]
구문과 매개 변수에 대한 자세한 내용은 Connect-ExchangeOnline을 참조합니다.
<UPN> 은 사용자 계정 이름 형식(예:
navin@contoso.onmicrosoft.com
)의 계정입니다.ExchangeEnvironmentName 매개 변수를 사용 하는 경우 ConnectionUri 또는 AzureADAuthorizationEndPointUrl 매개 변수를 사용 할 필요가 없습니다. ExchangeEnvironmentName 매개 변수에 대한 일반적인 값은 다음 표에 설명되어 있습니다.
환경 값 Microsoft 365 또는 Microsoft 365 GCC 해당 없음* Microsoft 365 GCC High O365USGovGCCHigh
Microsoft 365 DoD O365USGovDoD
Office 365 Germany O365GermanyCloud
21Vianet에서 운영하는 Office 365 O365China
* 필수 값
O365Default
도 기본값이므로 Microsoft 365 또는 Microsoft 365 GCC 환경에서 ExchangeEnvironmentName 매개 변수를 사용할 필요가 없습니다.버전 3.7.0 이상에서는 Exchange Online PowerShell cmdlet에 대한 명령줄 도움말이 기본적으로 더 이상 로드되지 않습니다. LoadCmdletHelp 스위치를 사용하면 Get-Help cmdlet에서 Exchange Online PowerShell cmdlet에 대한 도움말을 사용할 수 있습니다.
DelegatedOrganization 매개 변수는 공인 Microsoft 파트너로서 관리하려는 고객 조직을 지정합니다. 자세한 내용은 이 문서의 뒷부분에 있는 연결 예제를 참조하세요.
organization 특성에 따라 연결 명령에서 UserPrincipalName 매개 변수를 생략할 수 있습니다. 대신 사용자 이름과 암호를 입력하거나, Connect-ExchangeOnline 명령을 실행한 후 저장된 자격 증명을 선택합니다. 작동하지 않으면 UserPrincipalName 매개 변수를 사용해야 합니다.
MFA를 사용하지 않는 경우 UserPrincipalName 매개 변수 대신 Credential 매개 변수를 사용할 수 있습니다. 먼저
$Credential = Get-Credential
명령을 실행하고 사용자 이름과 암호를 입력한 다음 Credential 매개 변수(-Credential $Credential
)에 대한 변수 이름을 사용합니다. 작동하지 않으면 UserPrincipalName 매개 변수를 사용해야 합니다.SkipLoadingFormatData 스위치를 사용하여 Windows 서비스 내에서 Exchange Online PowerShell에 연결할 때 오류가 발생하지 않도록 합니다.
PowerShell 7에는 버전 2.0.4 이상이 필요합니다.
버전 3.7.2 이상에서는 WAM 관련 연결 오류가 발생하면 DISABLEWAM 스위치를 사용하여 WAM(웹 계정 관리자)을 사용하지 않도록 설정할 수 있습니다.
다음 섹션의 연결 예제는 최신 인증을 사용하며 기본 인증을 사용할 수 없습니다.
대화형 로그인 프롬프트를 사용하여 Exchange Online PowerShell에 연결
다음 예제는 MFA를 사용하거나 사용하지 않는 계정에 대해 Windows PowerShell 5.1 및 PowerShell 7에서 작동합니다.
이 예제는 Microsoft 365 or Microsoft 365 GCC 조직의 Exchange Online PowerShell에 연결됩니다.
Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com
이 예제는 Microsoft GCC High 조직의 Exchange Online PowerShell에 연결됩니다.
Connect-ExchangeOnline -UserPrincipalName laura@blueyonderairlines.us -ExchangeEnvironmentName O365USGovGCCHigh
이 예제는 Microsoft 365 DoD 조직의 Exchange Online PowerShell에 연결됩니다.
Connect-ExchangeOnline -UserPrincipalName julia@adatum.mil -ExchangeEnvironmentName O365USGovDoD
이 예제에서는 Office 365 Germany 조직에서 Exchange Online PowerShell에 연결 합니다.
Connect-ExchangeOnline -UserPrincipalName lukas@fabrikam.de -ExchangeEnvironmentName O365GermanyCloud
열리는 로그인 창에서 암호를 입력한 다음 로그인을 선택합니다.
참고
PowerShell 7에서는 기본적으로 브라우저 기반 SSO(Single Sign-On)가 사용되므로 독립 실행형 대화 상자 대신 기본 웹 브라우저에서 로그인 프롬프트가 열립니다.
MFA 전용: 확인 코드는 계정에 대해 구성된 응답 옵션(예: 디바이스의 문자 메시지 또는 Microsoft Authenticator 앱)에 따라 생성되고 전달됩니다.
열리는 확인 창에서 확인 코드를 입력한 다음 확인을 선택합니다.
PowerShell 7 전용 연결 방법
MFA가 없는 계정에 대한 PowerShell 7에서 이 예제에서는 PowerShell 창 내에서 자격 증명을 묻는 메시지를 표시합니다.
Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -InlineCredential
MFA 유무에 관계없이 계정에 대한 PowerShell 7에서 이 예제에서는 다른 컴퓨터를 사용하여 연결을 인증하고 완료합니다. 일반적으로 웹 브라우저가 없는 컴퓨터에서 이 메서드를 사용합니다(사용자가 PowerShell 7에서 자격 증명을 입력할 수 없음).
연결할 컴퓨터에서 다음 명령을 실행합니다.
Connect-ExchangeOnline -Device
연결 명령은 다음 출력에서 대기합니다.
로그인하려면 웹 브라우저를 사용하여 페이지를 https://microsoft.com/devicelogin 열고 인증할 XXXXXXXXX> 코드를 <입력합니다.
<XXXXXXXXX> 코드 값을 확인합니다.
웹 브라우저 및 인터넷 액세스가 있는 다른 디바이스에서 를 열고 https://microsoft.com/devicelogin 이전 단계의 <XXXXXXXXX> 코드 값을 입력합니다.
결과 페이지에 자격 증명을 입력합니다.
확인 프롬프트에서 계속을 선택합니다. 다음 메시지는 성공을 나타내야 하며 브라우저 또는 탭을 닫을 수 있습니다.
1단계의 명령은 계속해서 Exchange Online PowerShell에 연결합니다.
로그인 프롬프트 없이 Exchange Online PowerShell에 연결(무인 스크립트)
전체 지침은 Exchange Online PowerShell 및 보안 & 준수 PowerShell의 무인 스크립트에 대한 앱 전용 인증을 참조하세요.
고객 조직의 Exchange Online PowerShell에 연결
파트너 및 고객 조직에 대한 자세한 내용은 다음 문서를 참조하세요.
이 예제에서는 다음 시나리오에서 고객 조직에 연결합니다.
CSP 계정을 사용하여 고객 organization 연결합니다.
GDAP를 사용하여 고객 organization 연결합니다.
고객 organization 게스트로 연결합니다.
Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -DelegatedOrganization adatum.onmicrosoft.com
관리 ID를 사용하여 Exchange Online PowerShell에 연결
자세한 내용은 Azure 관리 ID를 사용하여 Exchange Online PowerShell에 연결을 참조하세요.
시스템 할당 관리 ID:
Connect-ExchangeOnline -ManagedIdentity -Organization "cohovinyard.onmicrosoft.com"
사용자가 할당한 관리 ID:
Connect-ExchangeOnline -ManagedIdentity -Organization "constoso.onmicrosoft.com" -ManagedIdentityAccountId <ManagedIdentityAccountIdGuid>
3단계: 완료되면 연결 끊기
완료되면 세션의 연결을 끊어야 합니다. 세션 연결을 끊지 않고 PowerShell 창을 닫으면 사용 가능한 모든 세션을 사용할 수 있으며 세션이 만료되기를 기다려야 합니다. 세션의 연결을 끊려면 다음 명령을 실행합니다.
Disconnect-ExchangeOnline
확인 프롬프트 없이 자동으로 연결을 끊려면 다음 명령을 실행합니다.
Disconnect-ExchangeOnline -Confirm:$false
참고
연결 끊기 명령은 연결하는 데 사용한 계정의 프로필 경로에 특수 PowerShell 문자(예: $
)가 포함된 경우 실패할 수 있습니다. 해결 방법은 프로필 경로에 특수 문자가 없는 다른 계정을 사용하여 연결하는 것입니다.
성공적으로 연결되었음을 어떻게 알 수 있나요?
오류가 발생하지 않으면 정상적으로 연결된 것입니다. 빠른 테스트는 Exchange Online PowerShell cmdlet(예: Get-AcceptedDomain)을 실행하고 결과를 확인하는 것입니다.
오류가 발생하면 다음 요구 사항을 확인합니다.
가장 흔한 문제는 암호를 잘못 입력한 경우입니다. 연결 단계를 다시 실행하고 사용하는 사용자 이름 및 암호에 주의를 기울입니다.
연결하는 데 사용하는 계정은 PowerShell 액세스를 사용하도록 설정해야 합니다. 자세한 내용은 Exchange Online PowerShell에 대한 액세스 설정 또는 해제를 참조하세요.
로컬 컴퓨터와 Microsoft 365 간에 TCP 포트 80 트래픽이 열려 있어야 합니다. 이 포트는 이미 열려 있을 수도 있지만 조직에서 제한적인 인터넷 액세스 정책을 사용하는 경우에는 열려 있는지를 고려해야 합니다.
조직에서 페더레이션 인증을 사용하고 IDP(ID 공급자) 및/또는 STS(보안 토큰 서비스)를 공개적으로 사용할 수 없는 경우 페더레이션 계정을 사용하여 Exchange Online PowerShell에 연결할 수 없습니다. 대신 Microsoft 365에서 비연속 계정을 만들고 사용하여 Exchange Online PowerShell에 연결합니다.
Exchange Online PowerShell에 대한 REST 기반 연결에는 PowerShellGet 모듈이 필요합니다. 종속성에 따라 PowerShellGet 모듈에는 PackageManagement 모듈이 필요합니다. 두 모듈을 모두 설치하지 않고 연결을 시도하면 오류가 발생합니다. 예를 들어 다음 오류가 표시될 수 있습니다.
'Update-ModuleManifest'라는 용어는 cmdlet, 함수, 스크립트 파일 또는 작동 가능한 프로그램의 이름으로 인식되지 않습니다. 이름의 철자를 확인하거나 경로가 포함된 경우 경로가 올바른지 확인하고 다시 시도합니다.
PowerShellGet 및 PackageManagement 모듈 요구 사항에 대한 자세한 내용은 Windows의 REST 기반 연결에 대한 PowerShellGet을 참조하세요.
연결한 후 다음과 같은 오류가 발생할 수 있습니다.
파일 또는 어셈블리 'System.IdentityModel.Tokens.Jwt,Version=Version>, Culture=<neutral, PublicKeyToken=<TokenValue>'를 로드할 수 없습니다. 특정 파일을 찾거나 로드할 수 없습니다.
이 오류는 Exchange Online PowerShell 모듈이 runspace로 가져온 다른 모듈과 충돌할 때 발생합니다. 다른 모듈을 가져오기 전에 새 Windows PowerShell 창에서 연결을 시도합니다.
부록: 이전 및 새 연결 메서드 비교
이 섹션에서는 Exchange Online PowerShell 모듈이 대체된 이전 연결 방법을 비교하려고 시도합니다. 기본 인증 및 OAuth 토큰 프로시저는 기록 참조에만 포함되며 더 이상 지원되지 않습니다.
다단계 인증 없이 연결
대화형 자격 증명 프롬프트를 사용하여 PowerShell 모듈을 Exchange Online.
Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
대화형 자격 증명 프롬프트 없이 PowerShell 모듈을 Exchange Online.
$secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd) Connect-ExchangeOnline -Credential $o365cred
기본 인증:
$secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/ -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
OAuth 토큰을 사용하는 New-PSSession:
$oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?BasicAuthToOAuthConversion=true -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
다단계 인증을 사용하여 연결
대화형 자격 증명 프롬프트를 사용하여 PowerShell 모듈을 Exchange Online.
Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
기본 인증: 사용할 수 없습니다.
OAuth 토큰을 사용하는 New-PSSession: 사용할 수 없습니다.
CSP 계정으로 고객 organization 연결
PowerShell 모듈 Exchange Online:
Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
기본 인증:
$secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
OAuth 토큰을 사용하는 New-PSSession:
$oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/? DelegatedOrg=delegated.onmicrosoft.com&BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
GDAP를 사용하여 고객 organization 연결
PowerShell 모듈 Exchange Online:
Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
기본 인증:
$secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
OAuth 토큰을 사용하는 New-PSSession:
$oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
고객 organization 게스트로 연결
PowerShell 모듈 Exchange Online:
Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
기본 인증:
$secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
OAuth 토큰을 사용하는 New-PSSession:
$oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
연결하여 무인 스크립트 실행
PowerShell 모듈 Exchange Online:
인증서 지문:
참고
CertificateThumbprint 매개 변수는 Microsoft Windows에서만 지원됩니다.
Connect-ExchangeOnline -CertificateThumbPrint "012THISISADEMOTHUMBPRINT" -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
Certificate 개체:
Connect-ExchangeOnline -Certificate <%X509Certificate2Object%> -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
인증서 파일:
Connect-ExchangeOnline -CertificateFilePath "C:\Users\navin\Desktop\automation-cert.pfx" -CertificatePassword (ConvertTo-SecureString -String "<Password>" -AsPlainText -Force) -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
자세한 내용은 Exchange Online PowerShell 및 보안 & 준수 PowerShell의 무인 스크립트에 대한 앱 전용 인증을 참조하세요.
기본 인증:
$secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/ -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
OAuth 토큰을 사용하는 New-PSSession:
$oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword) $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@contoso.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection Import-PSSession $Session
관리 ID를 사용하여 연결
PowerShell 모듈 Exchange Online:
시스템 할당 관리 ID:
Connect-ExchangeOnline -ManagedIdentity -Organization "contoso.onmicrosoft.com"
사용자가 할당한 관리 ID:
Connect-ExchangeOnline -ManagedIdentity -Organization "contoso.onmicrosoft.com" -ManagedIdentityAccountId <UserAssignedManagedIdentityPrincipalIdValue>
자세한 내용은 Azure 관리 ID를 사용하여 Exchange Online PowerShell에 연결을 참조하세요.
기본 인증: 사용할 수 없습니다.
OAuth 토큰을 사용하는 New-PSSession: 사용할 수 없습니다.