Exchange Online PowerShell에 연결

이 문서에는 MFA(다단계 인증)를 사용하거나 사용하지 않고 Exchange Online PowerShell 모듈을 사용하여 Exchange Online PowerShell에 연결하는 방법에 대한 지침이 포함되어 있습니다.

Exchange Online PowerShell 모듈은 최신 인증을 사용하여 Microsoft 365의 모든 Exchange 관련 PowerShell 환경(Exchange Online PowerShell, 보안 & 규정 준수 PowerShell 및 독립 실행형 Exchange Online Protection(EOP) 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 포럼에 문의하세요.

1단계: Exchange Online PowerShell 모듈 로드

참고

모듈이 이미 설치된 경우 일반적으로 이 단계를 건너뛰고 먼저 모듈을 수동으로 로드하지 않고 Connect-ExchangeOnline 을 실행할 수 있습니다.

모듈을 설치한 후 PowerShell 창을 열고 다음 명령을 실행하여 모듈을 로드합니다.

Import-Module ExchangeOnlineManagement

2단계: 연결 및 인증

참고

연결에 사용한 계정의 프로필 경로에 특수 PowerShell 문자(예 $: )가 포함된 경우 연결 명령이 실패할 수 있습니다. 해결 방법은 프로필 경로에 특수 문자가 없는 다른 계정을 사용하여 연결하는 것입니다.

실행해야 하는 명령은 다음 구문을 사용합니다.

Connect-ExchangeOnline -UserPrincipalName <UPN> [-ExchangeEnvironmentName <Value>] [-ShowBanner:$false] [-DelegatedOrganization <String>] [-SkipLoadingFormatData]

구문과 매개 변수에 대한 자세한 내용은 Connect-ExchangeOnline을 참조합니다.

  • <UPN> 은 사용자 계정 이름 형식(예: navin@contoso.onmicrosoft.com)의 계정입니다.

  • EXO V3 모듈(v3.0.0 이상)과 Exchange Online 대한 기본 인증(원격 PowerShell) 연결이 종료되면 REST API cmdlet만 사용합니다. 자세한 내용은 EXO V3 모듈의 REST API 연결을 참조하세요.

  • 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 매개 변수를 사용할 필요가 없습니다.

  • 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 이상이 필요합니다.

다음 섹션의 연결 예제는 최신 인증을 사용하며 기본 인증을 사용할 수 없습니다.

대화형 로그인 프롬프트를 사용하여 Exchange Online PowerShell에 연결

  1. 다음 예제는 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
      
  2. 로그인 창이 열리면 암호를 입력하고 로그인을 클릭합니다.

    계정에 로그인 창에 암호를 입력합니다.

    참고

    PowerShell 7에서는 기본적으로 브라우저 기반 SSO(Single Sign-On)가 사용되므로 독립 실행형 대화 상자 대신 기본 웹 브라우저에서 로그인 프롬프트가 열립니다.

  3. MFA만 해당: 계정에 대해 구성된 응답 옵션(예: 장치의 텍스트 메시지 또는 Microsoft Authenticator 앱)에 따라 확인 코드가 생성되어 제공됩니다.

    열리는 확인 창에서 확인 코드를 입력한 다음 확인을 클릭합니다.

    계정에 로그인 창에 확인 코드를 입력합니다.

PowerShell 7 전용 연결 방법

  • MFA가 없는 계정에 대한 PowerShell 7에서 이 예제에서는 PowerShell 창 내에서 자격 증명을 묻는 메시지를 표시합니다.

    Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -InlineCredential
    
  • MFA 유무에 관계없이 계정에 대한 PowerShell 7에서 이 예제에서는 다른 컴퓨터를 사용하여 연결을 인증하고 완료합니다. 일반적으로 웹 브라우저가 없는 컴퓨터에서 이 메서드를 사용합니다(사용자가 PowerShell 7에서 자격 증명을 입력할 수 없음).

    1. 연결할 컴퓨터에서 다음 명령을 실행합니다.

      Connect-ExchangeOnline -Device
      

      연결 명령은 다음 출력에서 대기합니다.

      로그인하려면 웹 브라우저를 사용하여 페이지를 https://microsoft.com/devicelogin 열고 인증할 XXXXXXXXX> 코드를 <입력합니다.

      <XXXXXXXXX> 코드 값을 확인합니다.

    2. 웹 브라우저 및 인터넷 액세스가 있는 다른 디바이스에서 를 열고 https://microsoft.com/devicelogin 이전 단계의 <XXXXXXXXX> 코드 값을 입력합니다.

    3. 결과 페이지에 자격 증명을 입력합니다.

    4. 확인 프롬프트에서 계속을 클릭합니다. 다음 메시지는 성공을 나타내야 하며 브라우저 또는 탭을 닫을 수 있습니다.

    5. 1단계의 명령은 계속해서 Exchange Online PowerShell에 연결합니다.

로그인 프롬프트 없이 Exchange Online PowerShell에 연결(무인 스크립트)

전체 지침은 Exchange Online PowerShell 및 보안 & 준수 PowerShell의 무인 스크립트에 대한 앱 전용 인증을 참조하세요.

고객 조직의 Exchange Online PowerShell에 연결

파트너 및 고객 조직에 대한 자세한 내용은 다음 topics 참조하세요.

이 예제에서는 다음 시나리오에서 고객 조직에 연결합니다.

  • 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 모듈 및 종속성으로 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: 사용할 수 없습니다.