Netwrix 1Secure는 데이터와 아이덴티티 전반에 걸쳐 통합된 가시성을 제공합니다 - 14일간 무료로 전체 액세스가 가능합니다.무료 평가판 시작

리소스 센터블로그

Exchange Online PowerShell에 연결

Exchange Online PowerShell에 연결

Aug 25, 2025

Exchange Online PowerShell을 통해 Microsoft 365 메일 환경을 안전하고 자동화된 방식으로 관리할 수 있습니다. 최신 인증과 MFA를 사용하는 EXO V2 모듈을 활용하면 관리자는 대규모로 사서함, 권한, 보고, 마이그레이션을 관리할 수 있습니다. 인증서 기반 및 관리형 ID 옵션은 자동화를 지원하는 반면, RBAC, TLS, 세션 관리 같은 모범 사례는 보안과 컴플라이언스를 강화합니다.

Exchange Online PowerShell 소개

Exchange Online PowerShell은 Microsoft 365의 일부인 Exchange Online에서 작업을 관리하고 자동화하기 위한 명령줄 기반 관리 인터페이스입니다. 이를 통해 관리자는 사용자 사서함을 관리하고 조직 설정을 구성하며, 스크립팅을 통해 대량 작업을 효율적으로 수행할 수 있습니다. 다음은 Exchange Online 관리를 위해 PowerShell을 사용하는 이점입니다:

  • 사서함 생성과 권한 할당 같은 반복 작업을 자동화하기 위해 스크립트를 작성하세요.
  • 한 번의 실행으로 여러 사용자 계정, 사서함 또는 그룹을 업데이트하거나 수정하는 등 개체를 대량으로 관리할 수 있으며, CSV 파일을 통해 데이터를 내보내고 가져올 수도 있습니다.
  • 지원되는 어떤 장치에서든 원격으로 Exchange Online에 연결하고 암호화된 세션을 통해 보안적으로 관리 작업을 수행할 수 있습니다.
  • 고급 보고 및 감사를 받으세요. 예를 들어 CSV, Excel 또는 HTML 형식으로 맞춤 보고서를 생성할 수 있으며, 정밀한 필터를 통해 audit mailbox access 및 관리 작업을 감사할 수 있습니다.
  • EAC 웹 인터페이스에서 노출되지 않는 숨겨진 또는 고급 설정에 대한 액세스.

Exchange Online 메일박스 감사( Auditing ) 빠른 참조 가이드

자세히 알아보기

Exchange Online PowerShell에 연결하기 위한 필수 조건

Exchange Online PowerShell에 연결하려면 특정 필수 조건을 충족해야 합니다.

시스템 요구 사항

  • 운영 체제: Windows 10, Windows 11 또는 Windows Server 2016/2019/2022
  • Windows PowerShell 5.1 이상
  • .NET Framework 4.7.2 이상

네트워크 요구 사항

  • 아웃바운드 HTTPS(TCP 443) 트래픽이 허용되는지 확인
  • TLS 1.2가 활성화되어 있어야 합니다
  • 인터넷 액세스 및 outlook.office365.com, login.microsoftonline.com, graph.microsoft.com에 연결할 수 있어야 함

필수 모듈

  • Exchange Online Management 모듈

인증 요구 사항

  • Microsoft Entra ID의 경우, 계정에는 다음과 같은 필요한 권한이 있어야 합니다.
  • 전역 관리자
  • Exchange 관리자
  • MFA가 활성화된 계정은 현대 인증을 위해 Exchange Online PowerShell 모듈이 필요합니다

필요 권한

계정에는 적절한 RBAC(Role-Based Access Control) 역할이 있어야 합니다:

  • 조직 관리
  • 수신자 관리

Exchange Online PowerShell에 연결하는 방법

Exchange Online PowerShell에 연결하는 다양한 방법은 다음과 같습니다:

Connect-ExchangeOnline 모듈(최신 방법)

Exchange Online 관리 모듈(Exchange Online Management Module, EXO V2)을 사용해 Exchange Online에 연결할 수 있습니다. 이 방법은 일상적인 관리 및 운영 작업에 권장됩니다. 최신 인증(OAuth)과 MFA를 지원합니다.

Azure Cloud Shell(브라우저 기반 연결)

이 방법을 사용하면 로컬 설치 없이도 Azure Portal에서 Exchange Online PowerShell을 직접 사용할 수 있습니다. Exchange Online PowerShell은 브라우저가 있는 모든 장치에서 액세스할 수 있으며, 사전 설치된 모듈과 도구가 포함되어 있습니다. 이 방법은 브라우저를 통해 관리하는 것을 선호하거나 로컬에서 PowerShell 도구에 대한 액세스가 제한적인 관리자에게 권장됩니다. 액세스 경로는 다음과 같습니다: Azure Portal > Cloud Shell > PowerShell.

Exchange Online 원격 PowerShell(사용 중단)

원격 PowerShell(WSMan 프로토콜)을 사용하여 Exchange Online PowerShell에 연결하는 이 레거시 방식은 더 이상 사용되지 않으며, 새로운 배포에는 권장되지 않습니다. 다만 최신 Exchange Online Management Module을 지원하지 않는 레거시 스크립트나 시스템에서는 사용할 수 있습니다. 이 방식은 MFA를 지원하지 않습니다.

서비스 주체(인증서 기반 인증) 사용

이 방식은 서비스 주체 계정과 인증서 기반 인증을 통해 무인 또는 스크립트 기반 관리가 가능하게 합니다. 자동화, CI/CD 파이프라인, 백그라운드 프로세스에 권장됩니다. 전제 조건으로 다음이 필요합니다: Azure AD 앱 등록 및 인증서 설정.

연결 방법 비교

Method

Best For

Supports MFA

Supports Automation

Connect-ExchangeOnline (EXO V2 Module)

Day-to-day admin tasks

Yes

Yes

Azure Cloud Shell

Quick browser access

Yes

No

Remote PowerShell (WSMan)

Legacy scripts

No

Yes

Service Principal (Certificate Auth)

Automation, CI/CD

No

Yes

모던 인증과 그 이점 이해하기

모던 인증(Modern authentication)은 OAuth 2.0과 Active Directory Authentication Library (ADAL) 또는 Microsoft Authentication Library (MSAL)를 활용하여 보안 로그인을 수행하는 ID 관리 방식입니다. 이는 기본 인증(basic authentication)과 같은 기존 인증 방법을 대체합니다.

모던 인증(Modern authentication)은 다음과 같은 이점을 제공하므로 Exchange Online PowerShell에 연결하는 권장되고 안전한 방법입니다:

  • 인증 정보를 직접 전달하지 않고 토큰 기반 인증을 위해 OAuth 2.0을 사용하므로 보안이 강화됩니다.
  • MFA 사용을 가능하게 하여 보안의 추가 계층을 제공합니다.
  • 관리자가 장치의 컴플라이언스, 위치 또는 위험 수준에 따라 정책을 적용할 수 있어, 정의된 조건에 따라 Exchange Online 리소스에 대한 액세스를 제한하는 데 도움이 됩니다.
  • Microsoft Entra ID 및 타사 ID 공급자와 원활하게 통합되며, 단일 로그온(SSO)을 지원합니다.

Microsoft는 기본 인증을 더 이상 사용하지 않으므로, 최신 인증 방식으로의 마이그레이션이 매우 중요합니다.

MFA 사용 또는 미사용 시 Exchange Online PowerShell에 연결하기 위한 요구 사항

MFA를 사용하거나 사용하지 않고 Exchange Online PowerShell에 연결하기 위한 요구 사항은 다음과 같습니다.

Without MFA (Basic Authentication – Deprecated Legacy Method)

Microsoft Entra ID account must not have MFA enabledBasic authentication must still be allowed (if not blocked organization-wide)

With MFA (Modern Authentication)

The Microsoft Entra ID account must have MFA configuredOAuth 2.0 must be supported (default in Exchange Online)

연결 방법 단계별 가이드

Exchange Online PowerShell에 연결하는 간단한 단계는 다음과 같습니다:

  1. Exchange Online PowerShell 모듈을 설치하세요.
  2. Connect-ExchangeOnline cmdlet을 사용하여 Exchange Online에 연결하세요. 메시지가 표시되면 Microsoft 365 Exchange 관리자 자격 증명을 입력합니다.
  3. Exchange Online 환경에 연결한 후에는 Exchange Online PowerShell 모듈에 포함된 cmdlet을 사용하여 메일박스, 연락처, 캘린더 같은 Exchange Online 설정과 개체를 관리할 수 있습니다.

Exchange Online 관리 모듈 설치

Exchange Online Management 모듈은 Windows, Mac, Linux 시스템에 설치할 수 있습니다. 관리자 권한으로 PowerShell을 열고 다음 명령을 실행하여 최신 Exchange Online Management 모듈을 설치하십시오:

Install-Module -Name ExchangeOnlineManagement -Force

다음 cmdlet을 실행하여 Exchange Online Management 모듈이 설치되어 있는지 확인하십시오:

Get-Module -ListAvailable -Name ExchangeOnlineManagement

설치가 올바르게 완료되었다면 모듈 세부 정보가 표시되어야 합니다.

Exchange Online PowerShell 모듈은 모든 Exchange 관련 PowerShell 환경에 연결하기 위해 현대적인 인증을 사용합니다.

모듈 업데이트

기존 Exchange Online Management 모듈을 업데이트하려면 다음 cmdlet을 사용하세요:

Update-Module ExchangeOnlineManagement

모듈 가져오기

다음 cmdlet을 사용하여 모듈을 PowerShell 세션에 로드하십시오:

Import-Module ExchangeOnlineManagement

실행 정책 설정

Exchange Online PowerShell에 연결할 때 PowerShell에 대해 설정된 실행 정책은 시스템에서 스크립트가 실행되는 방식을 결정합니다. RemoteSigned 는 다음을 보장하므로 권장되는 정책입니다:

  • 로컬에서 생성한 스크립트는 디지털 서명을 요구하지 않고도 실행할 수 있습니다
  • 인터넷에서 다운로드한 스크립트는 신뢰할 수 있는 게시자가 서명해야 합니다

다음 cmdlet을 사용하여 실행 정책을 RemoteSigned로 설정하세요:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

기본 인증을 사용하여 연결 (더 이상 사용되지 않음)

Microsoft는 2022년 10월부터 Exchange Online에서 기본 인증을 영구적으로 비활성화했습니다. 이를 현대적인 인증( OAuth 2.0 )으로 대체했습니다.

최신 인증을 사용하여 연결

최신 인증( OAuth 2.0 )은 Exchange Online PowerShell에 연결하는 권장되고 안전한 방법입니다. 연결 방법은 다음과 같습니다:

Method


Interactive Authentication (GUI Prompt)

This is the default connection method for most tenants, such as standard Microsoft 365 commercial tenants. Use this cmdlet to connect using modern authentication: Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com Replace admin@yourdomain.com with your Exchange Online admin account.A sign-in window will pop up; complete the login process, including multi-factor authentication (MFA) if required.

Device Code Authentication (For Non-GUI Environments)

If you’re working in a non-GUI environment, use the -Device parameter: Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com -Device Copy the provided Device Code.Open https://microsoft.com/devicelogin in a browser.Enter the Device Code.Authenticate with your account and complete MFA (if required).

Connect with Certificate-Based Authentication (Non-Interactive)

For automation or unattended scripts: Connect-ExchangeOnline -CertificateThumbprint “<CertificateThumbprint>” -AppId “<AppId>” -Organization “<YourTenant>” Replace: “<CertificateThumbprint>” with your certificate thumbprint”<AppId>” with the Microsoft Entra ID App ID.”<YourTenant>” with your domain (such as yourdomain.onmicrosoft.com).

서로 다른 Exchange Online 환경에 대한 연결 예시(GCC, GCC High, DoD)

최신 인증을 사용할 때 서로 다른 Exchange Online 환경에는 특정 연결 URI와 구성 설정이 필요합니다. 이러한 환경의 예시는 다음과 같습니다:

Method

Connection Info

Microsoft 365 GCC (Government Community Cloud)

Use Case: US Government customers (GCC) Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com Replace admin@contoso.onmicrosoft.com with your Exchange Online admin account.A sign-in window will pop up; complete the login process, including multi-factor authentication (MFA), if required.

Microsoft 365 GCC High

Use Case: US Government customers with high-security requirements Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com -ExchangeEnvironmentName O365USGovGCCHigh -ExchangeEnvironmentName – Specifies the GCC High environment explicitly

Microsoft 365 DoD (Department of Defense)

Use Case: Reserved for the US Department of Defense (DoD) tenants Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com -ExchangeEnvironmentName O365USGovDoD -ExchangeEnvironmentName: Explicitly sets the environment to the Office 365 US Government DoD environment

다단계 인증 사용

MFA가 활성화된 단계별 연결 프로세스

Managed Identities를 사용한 연결

Managed Identities를 사용해 Exchange Online PowerShell에 연결하면 Microsoft Entra에서 안전하고 비밀번호 없는 인증을 사용할 수 있습니다.

Managed Identities란 무엇인가요?

Managed Identities를 사용하면 Microsoft Entra 리소스가 스크립트나 코드에 자격 증명을 저장하지 않고도 지원되는 서비스에 인증할 수 있습니다. Exchange Online은 Azure Automation 또는 유사한 시나리오를 통해 무인 스크립팅에 이 기능을 지원합니다.

시스템 할당 vs. 사용자 할당 Managed Identities

Feature

System-Assigned

User-Assigned

Tied to a Resource

Linked to a single Microsoft Entra resource (such as VM, Logic App). It is deleted when the resource is deleted.

Can be shared across multiple resources

Management Scope

Automatically managed for its resource

Managed independently and reusable

Use Case

Suitable for single-resource scenarios

Ideal for shared or multi-resource use

Managed Identities를 사용하여 Exchange Online PowerShell에 연결

사전 요구 사항

  • Azure 리소스(예: VM, Function App, App Service)에 시스템 할당 또는 사용자 할당 managed identity가 활성화되어 있는지 확인하세요.
  • Managed Identity에 Exchange Online에 필요한 Microsoft Entra ID 역할을 할당하세요. 예:
  • Exchange 관리자
  • Global Reader 또는 Global Administrator(더 광범위한 권한이 필요한 경우).
  • Exchange Online PowerShell 모듈을 설치하고 가져옵니다.

연결 방법

-ManagedIdentity 매개 변수를 사용하여 Connect-ExchangeOnline을 실행하세요.

  • 시스템 할당 managed identity의 예:

Connect-ExchangeOnline -ManagedIdentity -Organization <YourDomain>.onmicrosoft.com

  • 사용자 할당 managed identity의 예:
      # Specify the Client ID of the User-Assigned Managed Identity

Connect-ExchangeOnline -ManagedIdentity -Organization <YourDomain>.onmicrosoft.com -ManagedIdentityAccountId <UserAssignedManagedIdentityClientIdValue>
      

자동화 작업이나 CI/CD 파이프라인과 같은 무인 시나리오의 경우:

  • 스크립트를 Azure Automation, Azure DevOps 또는 Managed Identity가 활성화된 VM과 같은 안전한 위치에 저장하세요.
  • Managed Identities를 사용해 인증하면, 자격 증명을 명시적으로 처리할 필요가 없습니다.

예제 스크립트:

      # Connect to Exchange Online

Connect-ExchangeOnline -ManagedIdentity

# Example Exchange Online commands

Get-Mailbox -RecipientTypeDetails UserMailbox | Select-Object DisplayName, PrimarySmtpAddress

# Disconnect the session

Disconnect-ExchangeOnline -Confirm:$false
      

추가 정보를 보려면 Use Azure managed identities to connect to Exchange Online PowerShell article 을(를) Microsoft에서 확인하세요.

초보자를 위한 Windows PowerShell 스크립팅 튜토리얼(PDF)

자세히 알아보기

구문 및 일반적인 연결 매개 변수

구문

Connect-ExchangeOnline cmdlet의 구문은 다음과 같습니다.

Connect-ExchangeOnline

[[-ConnectionUri] <String>]

[[-AzureADAuthorizationEndpointUri] <String>]

[[-ExchangeEnvironmentName] <ExchangeEnvironment>]

[[-PSSessionOption] <PSSessionOption>]

[[-DelegatedOrganization] <String>]

[[-Prefix] <String>]

[[-CommandName] <String[]>]

[[-FormatTypeName] <String[]>]

[-AccessToken <String>]

[-AppId <String>]

[-BypassMailboxAnchoring]

[-Certificate <X509Certificate2>]

[-CertificateFilePath <String>]

[-CertificatePassword <SecureString>]

[-CertificateThumbprint <String>]

[-Credential <PSCredential>]

[-Device]

[-오류 보고 사용]

[-인라인 자격 증명]

[-Cmdlet 도움말 로드]

[-로그 디렉터리 경로 <String>]

[-로그 수준 <LogLevel>]

[-ManagedIdentity]

[-ManagedIdentityAccountId <String>]

[-Organization <String>]

[-PageSize <UInt32>]

[-ShowBanner]

[-ShowProgress <Boolean>]

[-SigningCertificate <X509Certificate2>]

[-SkipLoadingCmdletHelp]

[-SkipLoadingFormatData]

[-TrackPerformance <Boolean>]

[-다중 스레딩 사용 <Boolean>]

[-사용자 주체 이름 UserPrincipalName <String>]

[-RPS 세션 사용]

[<공통 매개변수>]

공통 매개변수

기본 매개변수는 다음과 같습니다.

Parameter

Description

-UserPrincipalName

Specifies the account that you want to use to connect to Exchange Online PowerShell. This parameter lets you skip entering a username in the modern authentication credentials prompt.

-Credential

Specifies the username and password that is used to connect to Exchange Online PowerShell

-DelegatedOrganization

Specifies the customer organization you want to manage when acting as a delegated admin

-ConnectionUri

Specifies the Exchange Online connection endpoint (used in specialized environments like GCC or China tenants)

-CertificateThumbprint

Connects using a certificate instead of username/password. A valid value is the thumbprint value of the certificate.

-AppId

Used with -CertificateThumbprint to specify a Microsoft Entra ID application ID

-AccessToken

Specifies an OAuth 2.0 access token for authentication

-Organization

Specifies the organization when you connect using CBA or managed identity

선택적 매개변수는 다음과 같습니다.

Parameter

Description

-ShowProgress

Specifies whether to show or hide the progress bar of imported cmdlets when you connect. Valid values are $true and $false.

-SkipLoadingFormatData

Speeds up connections by skipping the loading of formatting and type data files

-InlineCredential

Directly passes credentials in the command line to avoid prompts when connecting to Exchange Online PowerShell

-LogDirectoryPath

Specifies the location of the log file

-LogLevel

Specifies the logging level. Valid values are Default and All.

-ConnectionTimeout

Specifies the timeout value (in seconds) for the connection attempt

-Device

Typically used on computers without web browsers. You don’t need to specify a value with this switch.

-ManagedIdentity

Specifies that you are using managed identity to connect. You do not need to specify a value with this switch.

고보안 환경에서의 연결에 대한 특정 매개변수:

GCC 환경의 경우

Parameter

Description

-ConnectionUri

Specifies the endpoint for GCC tenants

-EntraIDAuthorizationEndpointUri

Specifies the authorization endpoint for GCC

-ExchangeEnvironmentName

Specifies the GCC High environment explicitly

DoD 환경의 경우

Parameter

Description

-ConnectionUri

Points to the DoD-specific endpoint

-ExchangeEnvironmentName

Explicitly sets the environment to DoD

연결 자동화

비감시 스크립트를 위한 앱 전용 인증

인증서 기반 인증(CBA) 또는 앱 전용 인증은 Microsoft Entra 앱과 자체 서명 인증서를 사용하여 비감시 스크립트 및 자동화 시나리오를 지원합니다.

앱 전용 인증을 사용하면 서비스, 스크립트 또는 백그라운드 작업이 사용자 상호작용 없이도 API와 리소스에 안전하게 액세스할 수 있습니다. 이 방식은 예약 작업, 데이터 동기화, 백엔드 처리와 같은 자동화 시나리오에 이상적입니다.

앱 전용 인증 구성 단계

  1. Go to your identity provider, such as Microsoft Entra ID, and register the app. Then note down the Client ID, Tenant ID, and generate a Client Secret or upload a certificate.
  2. 필요한 API 권한을 할당하세요. 위임된 API 권한(Delegated API permissions) 대신 애플리케이션 API 권한(Application API permissions)을 부여해야 합니다.
  3. 자체 서명된 X.509 인증서(self-signed)를 생성하고 구성합니다. 이 인증서는 앱 전용 액세스 토큰(app-only access token)을 요청할 때 Microsoft Entra ID에 대해 애플리케이션을 인증하는 데 사용됩니다.
  4. 인증서를 애플리케이션에 등록합니다. 그러면 인증(authentication)에 개인 키(.pfx 파일) 또는 지문(thumbprint)을 사용할 수 있습니다.
  5. 애플리케이션에 적절한 RBAC 역할을 할당하려면 Microsoft Entra에서 지원하는 내장 역할 중 아무거나 사용하면 됩니다.

이제 'Connect Using Modern Authentication' 섹션에서 제공하는 cmdlet을 사용하여 Exchange Online PowerShell에 연결할 수 있습니다.

추가 정보는 Microsoft의 'Exchange Online PowerShell 및 Security & Compliance PowerShell에서 무인 스크립트를 위한 앱 전용 인증(App-only authentication)' 문서를 참조하세요.

무인 인증을 위한 예제 PowerShell 스크립트

      $TenantId = “your-tenant-id”

$ClientId = “your-client-id”

$ClientSecret = “your-client-secret”

$Resource = “https://graph.microsoft.com/”

# Get token

$Body = @{

grant_type = “client_credentials”

client_id = $ClientId

client_secret = $ClientSecret

scope = “$Resource/.default”

}

$TokenResponse = Invoke-RestMethod -Uri “https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token” -Method Post -Body $Body

$AccessToken = $TokenResponse.access_token

Write-Output “Access Token: $AccessToken”
      

인증서로 연결하기

자동화를 위해 인증서를 사용하면 클라이언트 시크릿에 비해 추가 보안 계층을 제공합니다. 인증서는 스크립트나 백그라운드 작업에서 앱 전용 인증에 이상적이며, 민감한 시크릿을 일반 텍스트로 저장할 필요가 없기 때문입니다.

자동화를 위한 인증서 사용 단계별 가이드

  1. 자체 서명 인증서를 생성합니다. PowerShell, OpenSSL 또는 어떤 인증서 관리 도구를 사용해도 인증서를 생성할 수 있습니다.

PowerShell로 이를 생성하는 방법은 다음과 같습니다:

      # Generate a self-signed certificate

$cert = New-SelfSignedCertificate -DnsName “yourapp.domain.com” -CertStoreLocation “Cert:\CurrentUser\My” -KeyExportPolicy Exportable

# Export the certificate and private key as a PFX file

$certPath = “C:\path\to\certificate.pfx”

$certPassword = ConvertTo-SecureString -String “yourpassword” -Force -AsPlainText

Export-PfxCertificate -Cert $cert -FilePath $certPath -Password $certPassword
      
  • Microsoft Entra ID 같은 신원 공급자(Identity Provider)에 애플리케이션을 등록합니다. 또한 인증서의 공개 키를 업로드해야 합니다. 이를 위해:
  • 앱 등록 섹션으로 이동합니다.
  • .crt 파일(공개 키)을 사용하여 키 자격 증명을 추가하세요.
  • 앱 ID와 테넌트 ID를 확인해 두세요.
  • 애플리케이션은 개인 키를 사용해 앱 전용 인증을 위한 JWT에 서명합니다.

인증서 기반 연결을 위한 보안 모범 사례

  • Azure Key Vault 같은 안전한 위치에 인증서를 저장하세요. 스크립트에 경로나 키를 하드코딩하지 마세요.
  • 유효 기간이 짧은 인증서를 사용하세요. 인증서는 만료되기 전에 교체(로테이션)하세요.
  • 손상되었거나 사용하지 않는 인증서는 즉시 폐기(무효화)하세요.
  • 최소 권한의 원칙을 사용해 앱과 해당 리소스에 대한 접근을 제한하고 principle of least privilege , 정확한 API 범위를 정의하세요.
  • 감사 목적을 위해 인증서 사용 내역을 기록하세요.
  • 앱 인증을 모니터링하여 무단 액세스를 탐지하세요.
  • .pfx 같은 개인 키 파일을 보호하려면 암호화를 사용하세요.
  • 강력한 비밀번호로 개인 키를 보호하세요.
  • 앱 구성 관리를 위해 MFA를 의무화하세요. 관리자에 대해 MFA를 적용해야 할 수도 있습니다.

세션 관리 및 연결 해제

Exchange Online PowerShell 세션을 올바르게 관리하고 종료하는 것은 보안을 유지하고 리소스 사용을 최적화하며 세션 소진을 방지하는 데 매우 중요합니다. 다음은 반드시 따라야 할 모범 사례입니다.

Exchange Online PowerShell 세션 관리를 위한 모범 사례

  • 최신 인증과 더 나은 보안을 위해 Exchange Online Management Module (EXO V2)를 사용하세요.
  • Exchange Admin 및 Security Admin 같은 역할처럼, 업무를 수행하는 데 필요한 권한만 가진 계정으로 로그인하세요.
  • Exchange Online에는 최대 세션 제한이 있습니다(사용자당 동시 세션 3개). 작업을 완료한 후 세션을 닫아 이 한도에 도달하지 않도록 하세요.
  • Exchange Online 세션의 기본 타임아웃에 유의하세요(대개 비활성 상태 15분). 유휴 타임아웃이 자주 발생한다면 스크립트를 효율적으로 최적화하세요.
  • 가능한 경우 스크립트를 단일 세션에서 실행하세요. 세션을 장시간 유휴 상태로 두지 마세요.

Exchange Online PowerShell 세션을 종료하기 위한 모범 사례

  • 작업이 끝나면 항상 세션을 연결 해제하세요. 연결 해제 없이 PowerShell 창만 닫으면 고아 세션이 남을 수 있습니다. 항상 명시적으로 연결 해제하세요.
  • Remove-PSSession cmdlet은 Exchange Online 세션을 완전히 정리하지 못합니다. 항상 다음을 우선 사용하세요:

Disconnect-ExchangeOnline -Confirm:$false

  • 고아 세션이 리소스를 소모하고 있다고 의심되면 다음을 사용하여 종료하세요:

Get-PSSession | Remove-PSSession

  • 세션이 시간 초과되면, 세션이 여전히 유효하다고 가정하지 말고 명시적으로 다시 연결하세요.

사용자의 Exchange Online PowerShell 액세스를 사용 또는 사용 중지

사용자의 Exchange Online PowerShell 액세스를 사용 또는 사용 중지하려면 Global Administrator 또는 Exchange Administrator 역할과 같은 충분한 관리 권한이 있어야 합니다. 또한 Organization Management 또는 Recipient Management 역할 그룹에 소속되어 있어야 합니다.

PowerShell 액세스를 비활성화하면 사용자의 Exchange Online PowerShell에 연결할 수 있는 기능만 영향을 받습니다. Microsoft 365 Admin Center 같은 다른 서비스에 대한 사용자의 액세스에는 영향을 주지 않습니다.

사용자 액세스 비활성화

PowerShell 액세스를 비활성화하면 사용자는 자신의 자격 증명으로 Exchange Online PowerShell에 연결할 수 없습니다. 다음은 액세스를 비활성화하는 cmdlet입니다:

Set-User -Identity <UserPrincipalName> -EXOModuleEnabled $false

사용자 액세스 활성화

PowerShell 액세스를 사용하도록 설정하면 사용자는 Exchange Online PowerShell에 연결할 수 있습니다. 액세스를 사용하도록 설정하는 cmdlet은 다음과 같습니다:

Set-User -Identity <UserPrincipalName> -EXOModuleEnabled $true

사용자의 PowerShell 액세스 상태 확인

사용자의 PowerShell 액세스가 활성화되어 있는지 또는 비활성화되어 있는지 확인하려면 다음 명령을 사용하세요:

Get-User -Identity “<UserPrincipalName>” | Format-List EXOModuleEnabled

Exchange Online PowerShell에 액세스 권한이 없는 모든 사용자를 가져오려면 다음 cmdlet을 사용하세요:

Get-User -ResultSize unlimited -Filter ‘RemotePowerShellEnabled -eq $false’

Exchange Online PowerShell에 액세스 권한이 있는 모든 사용자를 가져오려면 다음 cmdlet을 사용하세요:

Get-User -ResultSize unlimited -Filter ‘RemotePowerShellEnabled -eq $true’

Exchange Online에서 연결 해제

Exchange Online PowerShell V2 (EXO V2)를 사용 중이라면:

Connect-ExchangeOnline cmdlet으로 연결했다면, 다음 명령을 사용해 연결을 해제할 수 있습니다:

Disconnect-ExchangeOnline -Confirm:$false

-Confirm 매개변수는 선택 사항이며 확인 프롬프트를 표시하지 않도록 하는 데 사용됩니다. 기본적으로 일부 cmdlet은 작업을 수행하기 전에(예: 세션 연결 해제) 확인을 요청할 수 있습니다.

$false 는 확인을 요청받지 않으려는 것을 의미합니다. 따라서 연결 해제를 진행할 때 정말로 해제할지 여부를 묻지 않고 명령이 자동으로 실행됩니다.

이전 Exchange Online PowerShell 모듈을 사용 중이라면:

이전 원격 PowerShell 세션을 사용하고 있었다면(예: New-PSSession으로 연결), 아래와 같이 세션을 제거해서 연결을 끊을 수 있습니다:

Remove-PSSession $Session

이 경우 $Session은 처음 연결했을 때 PowerShell 세션 개체를 저장한 변수입니다.

일반적인 연결 문제 및 문제 해결

Exchange Online PowerShell을 작업할 때 연결 문제가 발생할 수 있습니다. 이러한 문제와 해결 방법을 살펴보겠습니다.

모듈이 설치되지 않았거나 오래됨

다음과 같은 오류가 표시될 수 있습니다.

  • ‘Connect-ExchangeOnline’ 용어를 인식할 수 없습니다.
  • 모듈 ‘ExchangeOnlineManagement’이(가) 설치되어 있지 않습니다.

해결 방법:

Exchange Online Management Module (EXO V2)를 설치하고 업데이트해야 합니다. 이 cmdlet을 사용하여 모듈이 올바르게 설치되었는지 확인하세요:

Get-Module -ListAvailable -Name ExchangeOnlineManagement

잘못된 자격 증명 또는 인증 문제

다음과 같은 문제가 발생할 수 있습니다:

  • 인증 오류가 발생했습니다
  • MFA 요청이 실패하고 있습니다

해결 방법:

  • 올바른 자격 증명으로 최신 인증을 사용하세요.
  • 계정이 MFA를 지원하고 차단되지 않았는지 확인하세요.
  • 캐시된 자격 증명을 모두 지우세요.
  • 계정에 조건부 액세스 정책이 적용되어 있다면, Exchange Online 액세스를 허용하는지 확인하세요.

세션 제한 소진

열려 있는 세션이 너무 많으면 연결할 수 없으며 다음과 같은 오류가 발생할 수 있습니다:

  • 동시에 허용되는 최대 세션 수를 초과했습니다.

해결책:

  • 유휴(오래된) 세션을 끊으세요.
  • 각 세션이 끝난 후 올바르게 연결을 끊었는지 확인하세요.
  • 활성 세션을 모니터링하세요.

프록시 또는 방화벽이 연결을 차단함

프록시 또는 방화벽 제한으로 인해 연결이 중단되거나 실패하며, 다음 오류가 표시됩니다:

  • 원격 서버에 연결할 수 없습니다.

해결 방법:

  • 프록시 설정이 올바르게 구성되었는지 확인하세요:
  • 방화벽을 통해 Exchange Online PowerShell 엔드포인트를 허용하세요:
  • *.outlook.office365.com
  • *.office365.com
  • *.microsoftonline.com
  • 다음으로 연결 상태를 테스트하세요:

Test-NetConnection outlook.office365.com -Port 443

오래된 TLS 버전

다음 오류가 발생할 수 있습니다:

  • 기본 연결이 닫혔습니다: 전송 중 예기치 않은 오류가 발생했습니다.

해결 방법:

  • 시스템이 TLS 1.2를 지원하는지 확인하세요.
  • .NET 버전을 확인하세요(4.6.2 이상을 권장합니다).

권한이 없습니다

다음과 같은 오류가 발생하나요:

  • 액세스가 거부되었습니다. 충분한 권한이 없습니다.

해결 방법:

  • 계정에 Exchange Administrator 또는 적절한 역할이 할당되어 있어야 합니다.

잘못된 PowerShell 버전

지원되지 않는 PowerShell 버전을 사용 중인 경우 호환성 오류가 발생할 수 있습니다.

해결 방법:

  • PowerShell 5.1 이상을 사용하고 있는지 확인하세요:
  • PowerShell Core(7.x)용인 경우 EXO V2 Module이 호환되는지 확인하세요.

계정 잠금 또는 비활성화된 계정

예를 들어 다음과 같은 오류가 발생합니다:

  • 계정이 잠겼거나 비활성화되었습니다.

해결 방법:

  • Microsoft 365 관리 센터에서 계정 상태를 확인하세요.
  • 필요한 경우 계정 잠금을 해제하거나 비밀번호를 재설정하세요.

DNS 해상도 문제

다음 오류가 발생합니다:

  • 원격 이름을 확인할 수 없습니다.

해결 방법:

  • Exchange Online 엔드포인트에 대한 DNS 해석을 확인하세요.
  • DNS 해석에 실패하면 공용 DNS 서버(예: 8.8.8.8 또는 1.1.1.1)를 사용하세요.

PowerShell 모듈 충돌과 관련된 오류

PowerShell에서 모듈 충돌이 발생하면 cmdlet이 인식되지 않거나 기능이 중복되거나 버전이 일치하지 않는 등 다양한 오류가 발생할 수 있습니다.

다음과 같은 오류가 발생할 수 있습니다:

  • ‘<cmdlet>’이라는 용어를 인식할 수 없습니다.
  • Cmdlet은 여러 모듈에서 사용할 수 있습니다.
  • 모호한 cmdlet 참조입니다.

해결 방법:

  • 이 cmdlet을 사용하여 현재 로드된 모든 모듈과 해당 버전을 확인하세요:

Get-Module -ListAvailable

  • cmdlet이 충돌을 일으키는 경우, 해당 cmdlet이 속한 모듈을 찾아보세요:

Get-Command <Cmdlet-Name>

  • 필요한 모듈을 명시적으로 가져오고 올바른 모듈 버전을 강제로 지정하세요:

Import-Module -Name ExchangeOnlineManagement -RequiredVersion 2.x.x -Force

  • 오래되었거나 충돌하는 모듈이 로드된 경우, 다음을 사용해 제거하세요:

Remove-Module -Name <Module-Name>

  • 모듈의 여러 버전이 설치되어 있는 경우, 다음을 사용해 이전 버전을 제거하세요:

Uninstall-Module -Name ExchangeOnlineManagement -RequiredVersion 1.x.x

REST API 연결 오류

PowerShell에서 REST API 연결 오류를 처리하려면 인증, 네트워크 연결 또는 잘못 구성된 요청과 관련된 문제를 진단하고 해결해야 합니다.

Issue

Solution

Authentication Issues Error: Authentication failures or invalid credentials.

Ensure you’re using the correct credentials and modern authentication (OAuth).Verify that your account has sufficient permissions (for example, Exchange Administrator or similar role).Use Secure Application Model or Certificate-based authentication if accessing programmatically.

Endpoint or Module Issues Error: Unable to connect to the required endpoint.

Verify you are using the correct Exchange Online PowerShell V2 module (ExchangeOnlineManagement).Update the module to the latest version:Check the connectivity to the Exchange Online REST endpoint using the following cmdlet. It should resolve and be reachable:
https://outlook.office365.com/powershell-liveid

Network Connectivity Error: Timeouts or connection refused errors.

The required endpoints should not be blocked by firewalls or proxies. These include: *.office365.com *.microsoftonline.com Test internet connectivityIf behind a corporate proxy, ensure the proxy is configured correctly for PowerShell.

Token Expiry Error: Authentication token expiration during the session.

Use Connect-ExchangeOnline with a persistent session, as shown below: Connect-ExchangeOnline -UserPrincipalName <your-admin-email> -ShowProgress $true Refresh your session if the token expires using the following cmdlet: Disconnect-ExchangeOnline Connect-ExchangeOnline

TLS/SSL Protocol Issues Error: TLS errors during connection.

Ensure TLS 1.2 is enabled

Service Outages Error: Service unavailable or intermittent connectivity.

Check the Microsoft 365 Service Health Dashboard for any ongoing issues.

HTTP Errors These errors occur when the server returns an HTTP status code indicating failure. Common Codes: 400 Bad Request: The request is malformed (e.g., invalid JSON or parameters)401 Unauthorized: Invalid or missing authentication credentials403 Forbidden: Access is denied even though authentication is correct404 Not Found: The requested endpoint or resource does not exist500 Internal Server Error: An issue on the API server

Ensure the payload and headers meet the API documentation requirements.Verify API keys, tokens, or other credentials.Ensure your account has access rights to the requested resource.Use logs or a tool like Postman to check raw request/response data.

SSL/TLS Errors Secure connections (HTTPS) may fail due to certificate issues.

Ensure the server’s SSL certificate is valid and trusted.For local testing, you can bypass SSL validation, but avoid this in production.Ensure your client libraries (e.g., Python requests, Node.js https) are up to date to support modern TLS versions.

Timeout Errors These occur when the API server does not respond within the expected timeframe.

Adjust the timeout parameter in your API client to increase timeout settings.Avoid sending excessively large payloads or slow queries.Contact the API provider if timeouts are frequent as there may be server load issues.

Rate-Limiting and Quotas APIs often have usage limits, which can lead to errors when exceeded. Error: HTTP 429 Too Many Requests

Check Rate Limits. Refer to the API documentation for request limits.Implement Throttling to space out requests to comply with the rate limits.Contact the API provider to request higher quotas.

Exchange Online을 위한 주요 PowerShell Cmdlet

사용 가능한 모든 Exchange Online PowerShell cmdlet 목록을 보려면 다음 cmdlet을 사용하세요:

Get-command -Module ExchangeOnlineManagement

Exchange Online의 핵심 cmdlet 몇 가지를 빠르게 살펴보겠습니다. 여기에는 Get-Mailbox, Get-EXOMailboxStatistics 외에도 다른 cmdlet이 포함되며, 메일박스와 사용자 및 해당 구성을 효과적으로 관리할 수 있습니다.

Get-Mailbox

이 cmdlet은 Exchange Online의 메일박스에 대한 정보를 검색합니다. 또한 사용자 메일박스, 공유 메일박스 등 특정 메일박스를 표시할 수도 있습니다.

구문

Get-Mailbox [-Identity] <String> [-RecipientTypeDetails <RecipientTypeDetails>] [other parameters]

일반적인 사용 예

  • 모든 사서함 가져오기:

Get-Mailbox -ResultSize Unlimited

  • 모든 공유 사서함 가져오기:

Get-Mailbox -RecipientTypeDetails SharedMailbox

  • 도메인으로 사서함을 필터링:

Get-Mailbox -Filter “EmailAddress -like ‘*@domain.com'”

Get-EXOMailboxStatistics

이 cmdlet은 Exchange Online의 사서함에 대한 자세한 통계를 검색하며, 사서함 크기, 항목 수, 마지막 로그인 시간과 같은 정보를 제공합니다.

구문

Get-EXOMailboxStatistics [-Identity] <String>

일반적인 사용 예

  • 사용자에 대한 사서함 통계를 가져옵니다:

Get-EXOMailboxStatistics -Identity user@domain.com

  • 모든 사서함의 크기를 가져옵니다:

Get-EXOMailboxStatistics | Select DisplayName, ItemCount, TotalItemSize

  • 특정 임계값을 초과하는 크기의 사서함을 가져오려면:

Get-EXOMailboxStatistics | Where-Object { $_.TotalItemSize -gt 10GB }

Get-MailboxStatistics

이 cmdlet은 Get-EXOMailboxStatistics 와 유사하지만 온-프레미스 Exchange 또는 하이브리드 환경에서 작동합니다. 사서함 크기와 항목 수에 대한 자세한 정보를 제공합니다.

구문

Get-MailboxStatistics [-Identity] <String>

일반적인 사용 예

  • 특정 사용자에 대한 통계를 가져옵니다:

Get-MailboxStatistics -Identity “user@domain.com”

  • 모든 사서함 크기와 마지막 로그인 시간을 확인합니다:

Get-MailboxStatistics | Select DisplayName, LastLogonTime, TotalItemSize

Get-MailboxPermission

이 cmdlet은 위임 액세스를 포함하여 사서함에 할당된 권한을 검색합니다.

구문

Get-MailboxPermission [-Identity] <String>

일반적인 사용 예

  • 메일박스에 대한 모든 권한 보기:

Get-MailboxPermission -Identity user@domain.com

  • 기본값이 아닌 권한만 필터링:

Get-MailboxPermission -Identity “user@domain.com” | Where-Object { $_.IsInherited -eq $false }

Set-Mailbox

이 cmdlet은 할당량 제한, 전달 설정, 기능 활성화 등 사서함 설정을 수정합니다.

구문

Set-Mailbox [-Identity] <String> [-Parameters]

일반적인 사용 예시

  • 메일박스 전달(포워딩) 활성화:

Set-Mailbox -Identity “user@domain.com” -ForwardingSMTPAddress “forwardto@domain.com” -DeliverToMailboxAndForward $true

  • 메일박스 할당량 변경:

Set-Mailbox -Identity “user@domain.com” -ProhibitSendQuota 50GB

New-Mailbox

이 cmdlet은 Exchange Online에서 사용자의 새 사서함을 만듭니다. 이 cmdlet은 개별 사용자용 사서함 생성, 공유 사서함 생성, 회의실 또는 장비 사서함과 같은 리소스 사서함 생성 등 다양한 시나리오에 사용할 수 있습니다.

구문

New-Mailbox -Name <Name> -MicrosoftOnlineServicesID <UserPrincipalName> -Password (ConvertTo-SecureString -String “<Password>” -AsPlainText -Force)

일반적인 사용 예

  • 사용자 사서함을 생성합니다:

New-Mailbox -Name “John Doe” -MicrosoftOnlineServicesID “johndoe@domain.com” -Password (ConvertTo-SecureString -String “P@ssw0rd!” -AsPlainText -Force)

  • 공유 사서함을 생성합니다:

New-Mailbox -Shared -Name “Support Team” -MicrosoftOnlineServicesID “support@domain.com”

  • 룸 사서함을 생성합니다:

New-Mailbox -Room -Name “Conference Room 1” -MicrosoftOnlineServicesID conference1@domain.com

  • 팀을 위한 공유 사서함을 만들기:

New-Mailbox -Shared -Name “HR Team” -MicrosoftOnlineServicesID “hr@domain.com” -Alias “HRTeam”

Remove-Mailbox

이 cmdlet은 Exchange Online에서 사서함을 삭제합니다. 이 작업은 사용자 사서함, 공유 사서함, 리소스 사서함(예: 회의실 또는 장비 사서함) 등 다양한 사서함 유형에 적용할 수 있습니다.

구문

Remove-Mailbox -Identity <MailboxIdentity>

자주 사용되는 예제

  • 사용자 사서함을 삭제합니다(사서함을 소프트 삭제하여 보존 기간 내에 복구할 수 있게 합니다.):

Remove-Mailbox -Identity “johndoe@domain.com”

  • 메일박스를 영구적으로 삭제합니다(보관 기간을 지정하지 않고 삭제):

Remove-Mailbox -Identity “johndoe@domain.com” -Permanent

  • 아카이브 메일박스만 삭제합니다(지정한 사용자의 기본 메일박스는 그대로 유지):

Remove-Mailbox -Identity “johndoe@domain.com” -Archive

Get-MailTrafficSummaryReport

이 cmdlet은 조직의 메일 트래픽에 대한 요약을 검색합니다( Microsoft 365 환경에서 사용 가능 ).

구문

Get-MailTrafficSummaryReport [-StartDate] <DateTime> [-EndDate] <DateTime>

일반적인 사용 예

  • 최근 7일간의 메일 트래픽을 가져옵니다:
      $StartDate = (Get-Date).AddDays(-7)

$EndDate = Get-Date

Get-MailTrafficSummaryReport -StartDate $StartDate -EndDate $EndDate
      

Search-Mailbox

이 cmdlet은 단일 사서함 또는 여러 사서함에서 특정 콘텐츠를 검색합니다.

구문

Search-Mailbox [-Identity] <String> [-SearchQuery <Query>] [-TargetMailbox <String>]

일반적인 사용 예

  • 특정 키워드가 포함된 이메일을 검색합니다:

Search-Mailbox -Identity “user@domain.com” -SearchQuery “Subject:’Invoice'”

  • 검색 결과를 다른 사서함으로 복사합니다:

Search-Mailbox -Identity “user@domain.com” -SearchQuery “Keyword” -TargetMailbox “admin@domain.com” -TargetFolder “SearchResults”

Get-MailboxAutoReplyConfiguration

이 cmdlet은 사서함의 자동 회신(부재중 자동 회신) 설정을 가져옵니다.

구문

Get-MailboxAutoReplyConfiguration [-Identity] <String>

일반적인 사용 예

  • 특정 사용자의 자동 회신 설정을 가져옵니다:

Get-MailboxAutoReplyConfiguration -Identity “user@domain.com”

Get-Recipient

이 cmdlet은 모든 수신자(메일박스, 그룹, 연락처 등)를 검색합니다.

구문

Get-Recipient [-Filter] <String>

자주 사용되는 예시

  • 모든 수신자를 가져옵니다:

Get-Recipient

  • 특정 유형의 수신자를 필터링합니다:

Get-Recipient -RecipientTypeDetails MailUser

Cmdlet 필터

필터를 사용하여 특정 속성에 따라 결과를 좁힙니다.

구문

필터는 { }로 묶고 속성-연산자-값 구조를 사용합니다:

-Filter {Property -Operator ‘Value’}

예시

Get-Mailbox -Filter {DisplayName -like “*Test*”}

일반 연산자

  • -eq: 같음
  • -ne: 같지 않음
  • -like: 와일드카드 일치 (*는 0개 이상 문자)
  • -notlike: -like의 부정
  • -gt: 보다 큼
  • -lt: 보다 작음

Cmdlet과 함께 필터를 사용하는 예

  • 특정 도메인의 사서함을 가져오기

Get-Mailbox -Filter {EmailAddresses -like ‘*@example.com’}

  • 특정 날짜 이후에 생성된 사서함 찾기

Get-Mailbox -Filter {WhenCreated -gt ‘2023-01-01’}

  • 특정 표시 이름 패턴이 있는 사서함 가져오기

Get-Mailbox -Filter {DisplayName -like ‘*Test*’}

  • 비활성화된 사서함 가져오기

Get-Mailbox -Filter {AccountDisabled -eq $true}

여러 조건을 결합하는 예시

-and 및 -or 같은 논리 연산자를 사용하여 필터를 결합할 수 있습니다.

  • 특정 UPN 및 표시 이름을 가진 사용자 가져오기

Get-Mailbox -Filter {UserPrincipalName -like ‘*@example.com’ -and DisplayName -like ‘*John*’}

  • 활성화되었지만 크기 임계값을 초과한 사서함 찾기

Get-Mailbox -Filter {AccountDisabled -eq $false -and ProhibitSendQuota -gt 10GB}

파이프라인을 사용한 필터링 예시

필터를 고급 필터링을 위해 Where-Object와 함께 사용할 수도 있습니다.

  • 사용자 지정 특성으로 사서함 필터링

Get-Mailbox | Where-Object { $_.CustomAttribute1 -eq ‘Value1’ }

  • 최근 30일 내 로그인한 활성 사서함 가져오기

Get-MailboxStatistics | Where-Object { $_.LastLogonTime -gt (Get-Date).AddDays(-30) }

고급 구성

  • Select-Object를 사용하여 출력을 정제하고 관련 속성만 표시하세요.

Get-Mailbox | Select-Object DisplayName, PrimarySmtpAddress

  • 보고를 위해 결과를 CSV로 내보내세요.

Get-Mailbox | Export-Csv -Path “Mailboxes.csv” -NoTypeInformation

  • 기본 제한은 1000개 결과입니다. 모든 항목을 가져오려면 -ResultSize Unlimited를 사용하세요.

PowerShell을 사용하여 Exchange Online으로 마이그레이션

PowerShell을 사용해 Exchange Online으로 마이그레이션하려면 온프레미스 환경을 준비하고, 마이그레이션 엔드포인트를 구성하며, 마이그레이션 프로세스를 관리하는 등 여러 단계를 거칩니다.

사전 요구 사항

마이그레이션을 수행하기 전에 다음을 준비했는지 확인하세요:

  • Exchange Online이 포함된 활성 Microsoft 365 또는 Office 365 구독.
  • 온프레미스 Exchange 서버와 Exchange Online 모두에 대한 관리자 자격 증명.
  • Exchange Online PowerShell V2 모듈(EXO V2)이 설치되어 있어야 합니다.
  • 하이브리드 마이그레이션을 사용하는 경우, Exchange Online(하이브리드) 구성을 설정합니다.

하이브리드 마이그레이션(온프레미스 Exchange와 Exchange Online을 모두 사용하는 조직)

하이브리드 환경에서는 온프레미스 사서함과 클라우드 기반 사서함 간의 공존을 유지하면서 사서함을 마이그레이션할 수 있습니다.

  1. Hybrid Configuration Wizard(HCW)를 설치하고 구성합니다.

Hybrid Configuration Wizard(HCW)는 하이브리드 Exchange 환경을 구성하기 위한 주요 도구입니다. 온프레미스 Exchange 서버가 Exchange Online과의 하이브리드 공존에 준비되었는지 확인합니다. Exchange Admin Center(EAC)에서 다운로드하여 실행할 수 있습니다.

  • 온프레미스 Exchange 서버를 준비합니다:
  • Get-ExchangeServer cmdlet을 실행하여 올바른 버전이 사용되고 있는지 확인합니다.
  • New-RemoteMailbox cmdlet을 실행하여 마이그레이션 중인 사용자용 원격 사서함을 만드세요.
  • New-MigrationBatch cmdlet을 사용하여 마이그레이션 배치를 생성한 다음 마이그레이션을 시작합니다:

New-MigrationBatch -Name “MigrationBatch” -SourceEndpoint <OnPremisesExchangeEndpoint> -TargetEndpoint <ExchangeOnlineEndpoint> -MailboxList <MailboxesToMigrate> -AutoStart -AutoComplete

자리 표시자를 바꾸세요:

  • <OnPremisesExchangeEndpoint> – 온-프레미스 Exchange 서버의 엔드포인트
  • <ExchangeOnlineEndpoint> – Exchange Online용 엔드포인트
  • <MailboxesToMigrate> – 마이그레이션할 사서함 목록
  • 마이그레이션 프로세스를 모니터링하려면:

Get-MigrationBatch | Get-MigrationUser

  • 마이그레이션이 완료되면 다음을 사용해 마이그레이션을 마무리할 수 있습니다:

Set-MigrationBatch -Identity “MigrationBatch” -Complete

컷오버 마이그레이션(소규모 환경용, 일반적으로 150개 미만의 사서함)

컷오버 마이그레이션에서는 모든 사서함을 온프레미스 Exchange에서 단일 배치로 Exchange Online으로 마이그레이션합니다.

  1. New-MigrationEndpoint cmdlet을 사용하여 온프레미스 Exchange 서버에 대한 엔드포인트를 만듭니다:

New-MigrationEndpoint -Name “CutoverEndpoint” -ExchangeServer “<OnPremisesExchangeServer>” -Type “ExchangeRemoteMove”

  • 모든 사서함에 대해 마이그레이션 배치를 만들려면 New-MigrationBatch cmdlet을 사용합니다:

New-MigrationBatch -Name “CutoverMigrationBatch” -SourceEndpoint “CutoverEndpoint” -MailboxList “user1@example.com”, “user2@example.com” -TargetDeliveryDomain “<ExchangeOnlineDomain>” -AutoStart -AutoComplete

  • Get-MigrationBatch cmdlet을 사용하여 마이그레이션을 모니터링합니다:

Get-MigrationBatch “CutoverMigrationBatch” | Get-MigrationUser

  • 마이그레이션이 완료되면 Set-MigrationBatch cmdlet을 사용하여 완료할 수 있습니다:

Set-MigrationBatch -Identity “CutoverMigrationBatch” -Complete

단계적 마이그레이션(중간 규모 환경용)

단계적 마이그레이션에서는 사내(온프레미스) Exchange에서 Exchange Online으로 우편함을 단계적으로(일반적으로 일괄 배치로) 마이그레이션합니다.

  1. 온프레미스 Exchange용 엔드포인트를 생성합니다:

New-MigrationEndpoint -Name “StagedEndpoint” -ExchangeServer “<OnPremisesExchangeServer>” -Type “ExchangeRemoteMove”

  • 단계적으로 사서함을 마이그레이션하려면 New-MigrationBatch cmdlet을 사용하여 마이그레이션 배치를 생성합니다:

New-MigrationBatch -Name “StagedMigrationBatch” -SourceEndpoint “StagedEndpoint” -MailboxList “user1@example.com”, “user2@example.com” -TargetDeliveryDomain “<ExchangeOnlineDomain>” -AutoStart -AutoComplete

  • 다음으로 마이그레이션을 모니터링합니다:

Get-MigrationBatch “StagedMigrationBatch” | Get-MigrationUser

  • 마이그레이션이 완료되면 다음으로 마무리합니다:

Set-MigrationBatch -Identity “StagedMigrationBatch” -Complete

보안 모범 사례

안전한 연결을 보장하세요

안전한 인증 방법을 사용하세요

기본 인증 대신 OAuth를 사용한 최신 인증을 활용하세요. 또한 Exchange Online에 액세스하는 모든 사용자 계정에 대해 다단계 인증(MFA)을 반드시 활성화해야 합니다.

조건부 액세스 정책 사용

Microsoft Entra에서 조건부 액세스를 구성하여 위치, 디바이스 준수 여부, 사용자 위험 수준 같은 제한 사항을 적용하세요. 알 수 없거나 위험한 위치에서의 액세스를 차단하거나 제한해야 합니다.

PowerShell 액세스 제한

역할 기반 액세스 제어(Role-Based Access Control, RBAC)를 사용하여 PowerShell 액세스를 필요한 사용자에게만 제한하세요. 추가로, 관리 권한이 필요하지 않은 계정에 대해서는 원격 PowerShell을 비활성화하는 것이 좋습니다.

TLS 암호화 적용

모든 Exchange Online 연결이 TLS 1.2 이상을 사용하도록 확인하세요. 또한 최신 암호화 프로토콜을 준수하는지 정기적으로 시스템을 점검(감사)해야 합니다.

Privileged Access Workstations (PAWs) 사용

관리 작업은 보안이 적용되고 격리된 워크스테이션으로만 제한하여 악성코드나 공격에 노출되는 위험을 줄이세요.

보안 애플리케이션 토큰 사용

무인 스크립트의 경우 사용자 자격 증명을 Microsoft Entra ID의 안전한 앱 등록으로 대체하세요.

Exchange Online에서 사용자 권한과 액세스 제어 관리

역할 기반 액세스 제어(Role-Based Access Control, RBAC) 구현

최소 권한 원칙에 따라 사용자에게 미리 정의된 역할을 할당하세요. 꼭 필요할 때만 Global Administrator와 같은 광범위한 역할을 할당합니다.

권한을 정기적으로 모니터링하고 검토하기

권한을 주기적으로 감사하고 불필요한 액세스는 제거하세요. 일상적인 절차로 Microsoft 365 Security & Compliance Center의 보고서를 사용해 액세스 로그를 검토합니다.

관리자 역할을 분리

관리 작업과 일상적인 사용자 활동에는 별도의 계정을 사용하세요. 더 나아가 메일박스 관리, 컴플라이언스 관리처럼 서로 다른 관리 기능마다 다른 역할을 할당하는 것이 좋습니다.

Just-in-Time (JIT) 액세스 사용

Microsoft Entra ID Privileged Identity Management (PIM)를 사용해 JIT 액세스 정책을 적용하여 일시적으로 권한을 상승시키세요.

메일박스 감사(로깅) 활성화

모든 사서함에 대해 감사를 활성화하여 변경 사항을 추적하고 무단 액세스를 탐지하세요.

운영 환경에서 PowerShell을 안전하게 사용하는 권장 사항

스크립트를 안전하게 보호하세요

자격 증명을 하드코딩하지 마세요. Azure Key Vault 또는 Windows Credential Manager와 같은 안전한 저장 메커니즘을 사용하십시오. 또한 파라미터화된 스크립트와 안전한 입력 처리 방식을 사용하여 주입(인젝션) 취약점을 방지하세요.

PowerShell 활동을 모니터링하고 로깅하기

PowerShell 로깅(모듈, 스크립트 블록 및 전사(Transcript) 로그)을 활성화하세요. 또한 로그를 SIEM 시스템과 통합해 실시간 모니터링할 수 있습니다.

서명된 스크립트 사용

신뢰할 수 있는 인증서로 PowerShell 스크립트에 서명하여 무결성을 보장하세요. 이를 지원하려면 PowerShell 실행 정책을 AllSigned로 설정합니다. 이 설정은 서명된 스크립트만 허용하기 때문입니다.

최소 권한으로 PowerShell 실행

불필요하게 권한이 높은 계정을 사용하지 마세요. 대신 특정 작업에 필요한 수준의 세분화된 권한을 사용합니다.

PowerShell 및 모듈을 최신 상태로 유지

보안 취약점을 해결하기 위해 PowerShell을 최신 버전으로 정기적으로 업데이트하세요. 또한 Exchange Online Management 모듈을 업데이트하여 최신 기능과 수정 사항을 활용하십시오.

네트워크 액세스 제한

방화벽 규칙 또는 Microsoft Entra ID Named Locations를 사용하여 Exchange Online 엔드포인트에 대한 액세스를 알려진 IP 주소로만 제한하세요.

중요(민감) 데이터 암호화

SecureString 또는 기타 암호화 방법을 사용해 민감한 데이터를 안전하게 저장하고 전달하세요.

Netwrix Auditor for Exchange

결론

Exchange Online용 PowerShell은 관리 및 행정 작업을 자동화하는 데 강력한 기능을 제공하여 관리자가 대량 사용자 업데이트, 보고, 구성 변경과 같은 복잡한 작업을 처리할 수 있게 해줍니다. OAuth와 MFA를 포함한 최신 인증 방식을 도입하면 조직은 Exchange Online에 대한 액세스를 안전하게 보호할 수 있습니다. PowerShell을 통한 자동화는 수작업을 최소화하고 사람의 실수를 줄이며 전반적인 운영 일관성과 확장성을 향상시킵니다.

고급 구성과 더 깊이 있는 학습을 위해 Microsoft의 공식 문서, PowerShell 교육 모듈, 커뮤니티 포럼을 방문하세요.

Microsoft 문서

  • Exchange Online PowerShell 문서 – Exchange Online에 연결, 사서함 관리, 컴플라이언스 작업 등 다양한 주제를 포괄적으로 다루는 안내서입니다.
  • Microsoft Learn – Exchange Online, PowerShell 스크립팅, 보안 모범 사례에 대한 무료 교육 모듈입니다.

자주 묻는 질문(FAQ)

Exchange Online PowerShell에 단계별로 연결하는 방법은 무엇인가요?

Exchange Online PowerShell에 연결하는 것은 올바른 순서를 따르면 간단합니다. 먼저 다음을 실행하여 Exchange Online PowerShell 모듈이 설치되어 있는지 확인하세요.Install-Module -Name ExchangeOnlineManagement 권한이 상승된 PowerShell 세션에서 실행합니다. 설치가 완료되면 다음을 사용해 연결을 시작하세요. Connect-ExchangeOnline -UserPrincipalName your-admin@domain.com 연결을 설정합니다. 계정에서 다단계 인증(MFA)이 활성화되어 있다면 인증을 위한 요청이 표시됩니다. 인증이 성공하면 다음 명령으로 연결이 정상인지 확인하세요.Get-Mailbox -ResultSize 1 기본 기능이 제대로 동작하는지 테스트합니다. 작업이 끝나면 보안 모범 사례를 유지하기 위해 Disconnect-ExchangeOnline을 사용해 연결을 해제하는 것을 항상 잊지 마세요.

Exchange Online PowerShell에 대한 액세스가 거부되었습니다—어떻게 해결하나요?

액세스 거부 오류는 보통 권한이 충분하지 않거나 인증 문제가 있는 경우에 발생합니다. 먼저 계정에 필요한 Exchange Online 관리 역할이 있는지 확인하세요—최소한 Exchange Administrator 또는 Global Administrator 권한이 필요합니다. 역할이 올바르다면 조직에서 PowerShell 연결을 차단할 수 있는 Conditional Access 정책을 사용하는지 확인합니다. 다음 명령을 사용해 캐시된 자격 증명을 지우고 Remove-StoredCredential 다시 연결을 시도하세요. 문제가 계속된다면 ExchangeOnlineManagement 모듈의 최신 버전을 사용하고 있는지 확인하세요. 이전 버전은 최신 인증 요구 사항과의 호환성 문제가 발생할 수 있습니다.

Exchange Online PowerShell에 연결할 수 없습니다—일반적인 해결 방법은 무엇인가요?

연결 실패는 보통 세 가지 범주로 나뉩니다. 인증 문제, 네트워크 문제, 또는 모듈 충돌입니다. 먼저 올바른 구문을 사용하고 있는지 확인하세요.Connect-ExchangeOnline -UserPrincipalName 사용이 중단된(Deprecated) 연결 방법이 아닌지 확인합니다. 네트워크 연결 상태와 방화벽 설정을 점검하세요. Exchange Online은 특정 Microsoft 엔드포인트에 대한 접근이 필요합니다. 사내 프록시 뒤에 있는 경우 PowerShell이 프록시 설정을 사용하도록 구성해야 합니다. 예전 MSOnline 모듈과 새 ExchangeOnlineManagement 모듈을 동시에 설치해 두면 모듈 충돌이 발생할 수 있습니다. 레거시 모듈을 제거하고 통합된 ExchangeOnlineManagement 모듈만 사용하면 가장 깔끔한 환경을 유지할 수 있습니다.

Exchange Online PowerShell 모듈을 설치하는 방법은 무엇인가요?

Exchange Online PowerShell 모듈을 설치하려면 명령 한 번만 필요하지만, 필수 준비 사항을 올바르게 갖추는 것이 중요합니다. PowerShell을 관리자 권한으로 실행한 다음 Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber 를 실행하세요. -Force 매개변수는 최신 버전을 받도록 보장하며, -AllowClobber는 기존 cmdlet과의 충돌을 처리합니다. 실행 정책 오류가 발생하면 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 를 사용해 정책을 일시적으로 설정하세요. 실행 정책을 수정할 수 없는 환경에서는 PowerShell Gallery에서 모듈을 수동으로 다운로드한 뒤 오프라인 방식으로 설치합니다. 모듈이 제대로 설치되었는지 확인하려면 항상 Get-Module ExchangeOnlineManagement -ListAvailable 를 실행해 설치 상태를 검증하세요.

MFA로 Exchange Online PowerShell에 연결하는 방법은 무엇인가요?

Exchange Online PowerShell에서 다단계 인증(MFA)은 올바르게 구성하면 간단합니다. 최신 Connect-ExchangeOnline cmdlet은 MFA를 자동으로 처리하므로, 다음을 사용하기만 하면 됩니다.Connect-ExchangeOnline -UserPrincipalName your-admin@domain.com 그러면 MFA 완료를 위해 브라우저 창으로 리다이렉트됩니다. 무인 스크립트 또는 자동화를 사용하는 경우에는 인증서 기반 인증을 구성하거나 Connect-ExchangeOnline -CertificateThumbprint or Connect-ExchangeOnline -AppId 와 함께 서비스 프린시펄을 사용하세요. Microsoft가 이러한 레거시 방식을 단계적으로 폐기하고 있으므로 기본 인증 또는 앱 비밀번호는 사용하지 마십시오. 최신 인증은 단지 더 안전할 뿐 아니라, 더 안정적이며 조직의 Identity management 정책과의 통합도 더 잘 지원합니다.

공유하기

더 알아보기

저자 소개

Asset Not Found

Jonathan Blackwell

소프트웨어 개발 책임자

2012년부터 엔지니어이자 혁신가인 Jonathan Blackwell은 엔지니어링 리더십을 제공해 Netwrix GroupID를 Active Directory 및 Azure AD 환경에서 그룹 및 사용자 관리 분야의 최전선에 올려놓았습니다. 개발, 마케팅, 영업에서의 그의 경험을 통해 Jonathan은 Identity 시장과 구매자가 생각하는 방식까지 완전히 이해할 수 있습니다.