Office 365 Exchange Online 서비스를 PowerShell에 연결하는 방법

주로 Microsoft Office 365 및 포함된 모든 애플리케이션은 그래픽 사용자 인터페이스를 통해 웹 브라우저를 통해 관리됩니다. 기본적으로 Office 365 관리 센터 및 Exchange 관리 센터 웹 인터페이스를 사용합니다. 그러나 수백 개의 사용자 계정에 적용되는 대량 작업을 수행하기 위해 명령 줄 인터페이스 (CLI)를 사용해야 할 수 있습니다. 또한 Admin 센터에는 없지만 Exchange Online cmdlet을 사용하려고 할 수 있습니다.

많은 관리자들은 명령 줄 인터페이스에서 Microsoft Exchange Server를 관리하기 위해 Microsoft에서 제공하는 PowerShell을 사용합니다. 그러나 온프레미스 Exchange Server 환경을 위한 이러한 표준 명령은 Microsoft 365 클라우드에서 실행되는 Exchange Online에 대해 작동하지 않습니다. Office 365에서 PowerShell을 사용하려면 Office 365에 연결하려면 특별한 PowerShell 모듈을 설치해야 합니다. Exchange Online PowerShell에 연결하는 다양한 방법에 대해 알아보려면 이 게시물을 읽어보세요.

요구 사항

Exchange Online PowerShell에 연결하려면 충족해야 할 몇 가지 요구 사항이 있습니다.

  • Windows 7 SP1 또는 최신 데스크톱 Windows 버전 및 Windows Server 2008 R2 SP1 또는 최신 서버 Windows 버전에서 PowerShell을 사용해야 합니다. Windows 관리 프레임워크 3.0, 4.0 또는 5.1의 업데이트된 버전을 설치하는 것 외에도 .NET Framework 4.5 이상을 설치해야 합니다.
  • 인터넷 연결이 필요합니다. 로컬 머신에서 대상 호스트로 연결하려면 TCP 포트 80이 열려 있어야 합니다.
  • Exchange Online PowerShell에 액세스할 수 있도록 현재 사용자에게 권한을 부여해야 합니다(기본적으로 관리자에게는 이러한 액세스가 허용됩니다).

해당 사용자의 Exchange Online PowerShell에 연결할 수 있는 액세스를 수동으로 활성화할 수 있습니다. 다음 명령을 사용하세요:

Set-User -Identity [email protected] -RemotePowerShellEnabled $true

작동 원리

Exchange Online PowerShell에 연결할 수 있지만, 이 과정은 로컬 Exchange Server를 관리하는 데 PowerShell을 사용하는 것보다 복잡합니다. 그러나 내장된 PowerShell 콘솔을 사용하여 원격 클라우드 인프라를 관리할 수 있습니다. 이 경우, 콘솔은 원격 PowerShell 또는 PowerShell Remoting이라고 합니다. Office 365 및 Exchange Online에 대한 원격 PowerShell 세션을 시작하는 과정은 약간 다릅니다. 원격 Office 365 세션을 열기 전에 특수 구성 요소를 다운로드하고 설치해야 합니다. 다행히도, 원격 PowerShell 세션을 생성할 때 필요한 cmdlet은 자동으로 다운로드됩니다. Microsoft Office 365 및 Microsoft Exchange Online을 관리하는 데 사용되는 PowerShell cmdlet의 다른 세트가 있습니다.

PowerShell을 통해 Microsoft Exchange Online에 연결하는 주된 이유는 다음과 같습니다:

  • 로컬 컴퓨터에서 Exchange Online PowerShell에 대한 원격 세션을 생성합니다.
  • 연결 설정을 제공하고 인증을 전달합니다.
  • 원격으로 Exchange Online을 관리하는 데 필요한 PowerShell cmdlet을 가져옵니다.

오늘의 블로그 게시물에서는 Windows 10에서 PowerShell cmdlet을 실행할 것입니다.

수동 설정

우선 수동 방법을 검토하여 구성 원리를 더 잘 이해해 봅시다.

  1. Windows PowerShell을 엽니다. 적어도 두 가지 방법으로 이 작업을 수행할 수 있습니다.
    1. 시작을 클릭하고 cmd를 입력한 다음, 명령 프롬프트 항목을 마우스 오른쪽 단추로 클릭하고 컨텍스트 메뉴에서 관리자 권한으로 실행을 선택합니다.
    2. 시작 > Windows PowerShell로 이동합니다. Windows PowerShell을 마우스 오른쪽 단추로 클릭하고, 관리자 권한으로 실행하여 PowerShell 명령을 제한 없이 실행할 수 있는지 확인합니다.
  2. 스크립트 실행을 활성화합니다 (Exchange Online 및 Office 365을 관리하기 위해 PowerShell을 준비하는 시작 단계에서 이 명령을 실행하는 것이 좋습니다). 그렇지 않으면 Import-PSSession 명령을 실행할 때 나중에 오류가 발생합니다:

    Import-PSSession : 파일을 로드할 수 없습니다. 이 시스템에서 스크립트 실행이 비활성화되어 있습니다. 파일에 서명할 유효한 인증서를 제공하십시오.

  3. 스크립트를 실행하려면 실행 정책을 RemoteSigned으로 설정해야합니다.

    Set-ExecutionPolicy RemoteSigned

  4. 정책 변경이 요청되면 확인하려면 Y를 누르세요. 또한 Set-ExecutionPolicy Unrestricted 명령을 사용하여 Unrestricted 정책을 사용할 수 있습니다.
    기본적으로 실행 정책 모드는 Restricted입니다.
  5. PowerShell에서 다음 명령을 실행하여 자격 증명을 가져오고 팝업 창에서 관리자 로그인/암호를 입력하여 Exchange Online에 액세스하십시오. 사용자는 Office 365에서 전역 관리자 권한이 있어야합니다.

    $Credential=Get-Credential
    입력한 자격 증명은 변수에 저장되어 다음 명령에서 $Credential로 사용됩니다.

  6. 당신은 New-PSSession cmdlet을 사용하여 원격 PowerShell 세션을 만들어야 하며 다음 명령을 실행해야 합니다:

    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Credential -Authentication Basic -AllowRedirection

    이 명령에서 클라우드에서 실행 중인 Exchange Online 서버의 대상 URL을 설정해야 합니다. 이 명령을 실행한 후에는 Microsoft Office 365 클라우드 서버가 당신의 계정과 연결된 적절한 Exchange Online 가상 서버에 액세스할 수 있도록 해줍니다.

  7. Exchange Online PowerShell cmdlet은 다음 명령으로 현재 세션에 가져와야 합니다:

    Import-PSSession $Session

  8. 명령을 받을 때 진행 상황 표시줄을 볼 수 있습니다.
  9. 성공적으로 명령을 실행한 후 다음 메시지가 표시됩니다.
    참고:
    계정에 MFA를 사용하는 경우 위에서 설명한 표준 cmdlet이 작동하지 않습니다. PowerShell을 사용하여 Exchange Online에 연결하려면 다음 명령을 실행하세요:

    Connect-EXOPSSession -UserPrincipalName YOUR_UPN

    YOUR_UPN(사용자 주체 이름)은 사용 중인 Office 365 계정의 이름입니다. Microsoft의 Exchange Online Remote PowerShell 모듈을 설치해야 할 수도 있습니다. 이 모듈을 사용할 때, 세션이 1시간 후에 종료되므로 장기 스크립트 실행에 불편할 수 있습니다. 회사 네트워크에서 Exchange Online PowerShell로 연결할 때 MFA를 우회하려면 신뢰할 수 있는 IP 주소(즉, 회사의 IP 주소)를 사용하세요. MFA(다중 인증)는 두 번째 보안 계층을 추가하는 고급 인증 방법입니다. 비밀번호를 입력한 후 사용자의 휴대전화로 확인 코드가 전송되며, 사용자는 확인 코드를 입력하여 계정을 확인하고 Office 365 클라우드 서비스에 액세스해야 합니다.

  10. Office 365 및 Exchange Online에 연결한 후에는 Office 365 클라우드 환경을 관리할 수 있습니다. Exchange Online에 올바르게 연결되었는지 확인하고 사용자의 메일함 목록을 나열해 보겠습니다.

    Get-Mailbox

    Exchange Online PowerShell에서 사용 가능한 모든 cmdlet을 다음 명령으로 나열할 수 있습니다:


    Get-Command -Module tmp*

    Exchange Online PowerShell cmdlet 이름은 변환되지 않습니다.

  11. Exchange 365에서 작업을 마치면 세션을 끊으십시오. 이것이 권장되는 방법입니다.

    Remove-PSSession $Session

    이 명령을 실행한 후에는 메시지가 표시되지 않습니다. 세션이 끊어진 것을 확인하려면 Get-MailBox 명령을 실행하여야 합니다. 세션이 끊어졌을 경우, Exchange Online cmdlet을 실행할 수 없다는 오류가 표시됩니다.

세션을 끊어야 하는 이유는 무엇일까요? 단순히 동시에 열 수 있는 활성 동시 세션의 수가 세 개로 제한되어 있기 때문입니다. 만약 한 번에 세 개의 Exchange Online PowerShell 세션을 열어두고 사용하지 않을 때 어느 것도 끊지 않는다면, 새로운 PowerShell 콘솔에서 Exchange Online PowerShell에 다시 연결하려면 이 세션 중 하나가 만료될 때까지 기다려야 합니다.

자동화된 구성

Exchange Online PowerShell에 수동으로 연결하는 방법을 알았으니, 자동화된 방법을 사용할 수 있습니다. 이 방법의 장점은 입력해야 할 명령어의 수가 적다는 것입니다.

  1. 다운로드 마이크로소프트 웹 사이트에서 스크립트를 다운로드합니다. 이 경우 스크립트 파일의 이름은 ConnectExchangeOnlinePowerShell.ps1입니다.
  2. 스크립트가 위치한 디렉토리로 이동합니다; 예시에서는 스크립트가 C:\temp_win\에 저장되었습니다.
  3. 스크립트를 실행하기 전에 스크립트 실행 정책을 편집해야 합니다(첫 번째 방법에서 보여준 것과 비슷하게). 그렇지 않으면 다음과 같은 오류가 발생합니다:

    C:\temp_win\ConnectExchangeOnlinePowerShell.ps1 파일이 디지털 서명되지 않았습니다. 현재 시스템에서 이 스크립트를 실행할 수 없습니다..

    이 문제를 피하기 위해 우회 실행 정책을 적용할 수 있습니다:


    Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

  4. 실행 정책 변경을 확인하려면 Y를 입력하세요.
  5. 그 후 스크립트를 실행할 수 있습니다. MFA를 사용하지 않는 경우 추가 인수 없이 스크립트를 실행하세요:

    .\ConnectExchangeOnlinePowerShell.ps1

    Office 365 환경에서 MFA(다단계 인증)를 사용하는 경우 다음 명령어를 시도하세요:


    .\ConnectExchangeOnlinePowerShell.ps1 -MFA

  6. 이제 Exchange Online에 성공적으로 연결했으므로 사용자 계정, 메일박스 등을 관리할 수 있습니다. 예를 들어, 사용자의 메일박스를 나열할 수 있습니다:

    Get-Mailbox

    이 스크립트를 사용하여 작업을 예약하고 자동화할 수 있습니다. 예를 들어, 위와 같이 대화형 창에 자격 증명을 입력하지 않고 Exchange Online에 연결할 수 있습니다. 스크립트를 실행할 때 명령 옵션으로 로그인 및 비밀번호를 명령줄에 입력할 수 있습니다:


    ./ConnectExchangeOnlinePowerShell.ps1 -UserName admin@your_domain.com -Password your_password

    명령줄에 암호를 평문으로 입력하는 것은 안전하지 않을 수 있습니다.

  7. PowerShell에서 Exchange Online 작업을 완료하면 세션을 종료하는 것을 잊지 마세요:

    ./ConnectExchangeOnlinePowerShell.ps1 -Disconnect

대안 방법

Exchange Online PowerShell에 연결하는 또 다른 방법을 고려해 봅시다. 이 방법은 첫 번째 방법의 수정으로 간주될 수 있습니다.

  1. PowerShell에 대한 새로운 프로필을 함수와 함께 만듭니다:

    New-item -type file -force $profile

  2. 텍스트 편집기에서 프로필 구성 파일을 편집하여 Connect-EXOnline이라는 함수를 추가합니다:

    notepad $profile

  3. 다음 내용을 PowerShell 프로필 구성 파일에 추가하고 사용자명@도메인.com을 계정 이름으로 변경한 후 텍스트 파일을 저장하십시오.

    함수 Connect-EXOnline
    {
    $credentials = Get-Credential -Credential [email protected]
    Write-Output “Exchange Online cmdlet 가져오는 중”
    $Session = New-PSSession -ConnectionUri https://outlook.office365.com/powershell-liveid/ `
    -ConfigurationName Microsoft.Exchange -Credential $credentials `
    -Authentication Basic -AllowRedirection
    Import-PSSession $Session
    }

  4. 현재 PowerShell 창을 닫고 새로운 PowerShell 창을 관리자 권한으로 엽니다. Exchange Online PowerShell에 연결하려면 다음 명령을 실행하십시오:

    Connect-ExOnline
    팝업 창에서 암호를 입력하십시오.

  5. Exchange Online PowerShell 작업을 완료한 후에는 다음 명령으로 세션을 종료하십시오:

    Get-PSSession | Remove-PSSession

결론

Exchange Online PowerShell는 Exchange Admin Center 웹 인터페이스에 대한 좋은 대안입니다. Office 365 PowerShell 및 Exchange Online PowerShell을 사용하면 단일 명령 또는 스크립트를 사용하여 여러 개체에 대한 대량 작업 및 작업을 수행할 수 있습니다. 오늘의 블로그 게시물에서는 자동화된 방법 중 하나를 사용하여 Exchange Online PowerShell에 연결하는 방법을 다루었습니다. 각 방법의 작동 원리는 유사하며 세 가지 주요 단계로 구성됩니다: 원격 PowerShell 세션 생성, 인증 및 Exchange Online PowerShell cmdlet 가져오기.

중요한 권장 사항은 Exchange Online PowerShell 작업을 완료한 후 원격 PowerShell 세션을 해제하여 모든 세션이 사용 중이고 새로운 원격 Exchange Online PowerShell 세션을 열 수 없는 상황을 피하는 것입니다. 클라우드에 Exchange Server를 가지고 있는 것은 신뢰할 수 있는 솔루션입니다. 그러나 이 경우에도 Exchange 서버의 데이터를 우발적 삭제 및 기타 재해로부터 보호하기 위해 백업을 만드는 것이 권장됩니다.

Source:
https://www.nakivo.com/blog/how-to-connect-office-365-exchange-online-powershell/