다음을 통해 공유


Exchange Online PowerShell에 연결

이 문서에는 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에 연결을 참조하세요.

시작하기 전에 알아야 할 사항은 무엇인가요?

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에 연결

  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에 연결

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

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

  • 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: 사용할 수 없습니다.