Geek of All Trades: Windows PowerShell로 Manage Office 365 관리

Windows PowerShell을 사용해서 Office 365와 같은 클라우드 응용 프로그램을 관리하는 방법을 생각해 본 적이 없다면 여기에 완전 초보자를 위한 퀵 스타트가 있습니다.

Greg Shields

필자의 직장인 Concentrated Technology에서는 최근 Google Apps for Business에서 Microsoft Office 365로의 전환을 성공적으로 마쳤습니다. 마이그레이션은 순조롭게 진행되었습니다. 간단한 타사 솔루션을 사용해서 한 사용자당 암호 입력 두 번과 마우스 클릭 한 번으로 데이터를 새 플랫폼으로 마이그레이션할 수 있었습니다.

갑자기 새로운 규칙을 가진 완전히 새로운 인프라를 사용하게 되었습니다. 우리들은 모두 Microsoft 기술에 꽤 경험이 많았지만, Office 365에서 Windows PowerShell을 사용하는 것은 생각하지 못한 부분이었습니다. Windows PowerShell과 Office 365를 함께 사용한다는 것이 처음에는 이상하게 보이기도 했습니다. 사람들이 Office 365와 같은 솔루션을 찾는 이유 중 하나는 단순함입니다.

Windows PowerShell을 사용하는 작업은 꼭 복잡하지는 않지만 그렇게 사소한 일도 아닙니다. 가장 어려운 부분은 일단 시작하는 것입니다. 이달에는 완전 초보자를 위해 깔끔한 Office 365용 Windows PowerShell 퀵 스타트를 마련했습니다. 이 단계를 따라서 몇 가지 주요 cmdlet을 배우면, "강력함"과 "간단함"이 완전히 동떨어진 것만은 아니라는 것을 알 수 있을 것입니다.

1단계: 원격 실행에 (정말로) 익숙해지기

Windows PowerShell은 실제로 아주 강력합니다. 하지만 학습 곡선에 완전 초보자가 종종 길을 잃는 지점이 있습니다. 이 지점이란 기본적인 cmdlet을 대부분 배웠지만, 유용한 솔루션을 만드는 방법을 제대로 이해하기 전입니다. 로컬 컴퓨터에서 실행 중인 프로세스를 확인하려면 Get-Process를 실행하면 되지만, 현실적으로 활용하려면 원격 컴퓨터를 대상으로 일련의 cmdlet을 파이프라인으로 실행할 수 있어야 합니다.

PowerShell 원격 기능이 작동하는 방법을 이해할 때까지 로컬 LAN 상에서 충분한 시간을 투자하도록 하십시오. 여러 cmdlet에서 –computerName 매개 변수가 작동하는 방법이나, Invoke-Command가 필요한 상황을 알아보고, Get-Help는 물론, 예를 보는 데 아주 유용한 -exa 스위치에도 익숙해지도록 하십시오.

이러한 기술이 필요한 이유는 Office 365에서 안정적인 기반을 위해 이러한 기술이 활용되기 때문입니다. Office 365 cmdlet을 사용할 때는 자신의 서버가 아닌 Microsoft 서버에서 명령을 실행하며, LAN이 아닌 인터넷을 통해 명령을 전송합니다. 생각하는 방법을 바꾸어야 하는 개념이지만 그만한 가치가 있습니다. 이러한 개념에 익숙해지고 깨달음의 순간을 거친 후에는 강력한 기능을 마음껏 사용하는 것으로 보답을 받을 것입니다.

2단계: PowerShell 준비

Windows PowerShell과 Office 365를 함께 사용하려면 준비가 필요합니다. Windows 7 데스크톱에서 Office 365을 원활하게 사용하는 데도 몇 가지 준비 작업이 필요합니다.

Windows PowerShell로 Office 365 관리 페이지를 방문해서 Office 365 cmdlet을 설치하십시오. 이러한 cmdlet은 Windows PowerShell용 Microsoft Online Services 모듈의 일부로 설치되고, x86 및 x64 버전이 있습니다. 이러한 항목을 설치하기 전에 데스크톱 컴퓨터에 Microsoft Online Services 로그인 도우미, Windows PowerShell, 그리고 .NET Framework 3.5.1이 설치 및 활성화되어 있어야 합니다.

3단계: 모듈 가져오기, 세션 만들기, 명령 가져오기

Windows PowerShell cmdlet을 설치하는 것은 준비 단계일 뿐입니다. 아직 Microsoft Office 365 클라우드로 연결하기 위한 작업은 전혀 수행되지 않은 상태입니다. 클라우드로 연결하려면 복잡하지는 않지만 다소 번거로운 5단계 과정을 거쳐야 합니다.

1. 새로 설치한 Online Services 모듈 가져오기

2. Office 365 자격 증명 입력

3. 원격 세션 만들기

4. 해당 세션의 명령을 로컬 Windows PowerShell 세션으로 가져오기

5. Office 365 서비스에 연결

다음은 이 절차를 수행하는 5가지 명령입니다.

Import-Module MSOnline $O365Cred = Get-Credential $O365Session = New-PSSession -ConfigurationNameMicrosoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $O365Cred -Authentication Basic -AllowRedirection Import-PSSession $O365Session Connect-MsolService –Credential $O365Cred

처음에는 다소 복잡해 보일 수 있는데, Windows PowerShell은 모든 사람들이 모든 작업을 할 수 있도록 설계되었기 때문입니다. 이 때문에 다른 명령보다 좀 더 복잡한 명령이 있습니다. 이 구조는 5가지 역할을 수행한다는 것을 알 수 있습니다. 먼저 Import-Module을 사용해서 Office 365 cmdlet을 사용자의 세션으로 추가합니다. 이를 통해 로컬 세션이 Office 365와 통신할 수 있게 됩니다.

둘째, username@domain.onmicrosoft.com 형식의 사용자 Office 365 사용자 이름과 암호를 요구하는 대화 상자를 엽니다. 이 자격 증명은 나중에 사용할 수 있도록 $O365Cred 변수에 저장됩니다.

이제부터 흥미로운 부분입니다. 셋째와 넷째 명령은 https://ps.outlook.com/powershell의 클라우드에 새로운 Windows PowerShell 세션을 만듭니다. 그런 다음 이 세션의 cmdlet을 사용자의 로컬 세션으로 가져옵니다. PSExec를 사용해서 원격 서버의 명령 프롬프트에 액세스하는 것과 비슷하게 생각할 수 있는데, 큰 차이는 원격 서버가 클라우드 내 어딘가에 있다는 것입니다. 클라우드의 원격 세션은 사용자의 로컬 세션에 병합됩니다(그림 1 참조).

Creating a remote Office 365 session

그림 1 원격 Office 365 세션 만들기.

이제 그림 1의 노란색 텍스트를 다시 확인해 보면 다음과 비슷한 내용을 볼 수 있습니다.

WARNING: Your connection has been redirected to the following URI: "https://pod51018psh.outlook.com/PowerShell-LiveID?PSVersion=2.0" WARNING: Your connection has been redirected to the following URI: "https://sn2prd0702psh.outlook.com/PowerShell-LiveID?PSVersion=2.0"

URI는 여기에 나온 것과는 약간 다를 것입니다. 원격 세션을 https://ps.outlook.com/powershell로 연결하면 사용자의 Office 365 리소스를 호스트하는 서버로 자동으로 리디렉션됩니다. 필자의 경우 이 서버는 pod51018psh.outlook.com 및 sn2prd0702psh.outlook.com입니다.

사용자의 서버는 다를 것입니다. 이러한 서버는 나중에 Office 365 Windows PowerShell 명령을 실행할 때 직접 상호 작용하는 서버입니다.

4단계: 새로운 명령 라이브러리를 따름

연결을 시작한 후에는 Office 365 자산을 관리할 준비가 됩니다. 이 시점에 Windows PowerShell 노출은 Office 365 및 Exchange 리소스로만 제한됩니다. SharePoint에 대한 노출은 곧 다룰 예정입니다.

이제 Get-Command -module MSOnline을 입력하면 사용 가능한 Office 365 cmdlet 목록을 볼 수 있습니다. 여기에 이러한 명령과 간단한 설명이 포함된 표가 있습니다.

다음은 Office 365 암호를 변경하는 아주 유용한 cmdlet입니다. 여기에서는 암호를 P@ssword!로 재설정했습니다. 자동으로 임의의 암호를 생성하려면 -NewPassword 매개 변수를 생략하면 됩니다.

Set-MsolUserPassword -UserPrincipalNameusername@domain.onmicrosoft.com-NewPasswordP@ssword!

이러한 cmdlet은 모두 Office 365 개체와 연관되어 있습니다. 여기에 이러한 개체가 상호 작용하는 Exchange 리소스를 관리하는 두 번째 명령 집합이 추가됩니다. 그러면 알아볼 cmdlet이 크게 늘어나지만 여기에 아주 편리한 참조 자료가 있습니다.

5단계: 프로필을 사용해서 수월하게 하기

클라우드로 연결하는 3단계의 5가지 명령은 꽤 큰 텍스트 블록입니다. 로그인할 때마다 매번 이 텍스트 블록을 입력해야 한다면 Windows PowerShell을 사용하는 매력이 떨어질 수도 있습니다. 다행히 Windows PowerShell은 기본적으로 어떤 일을 한 번만 할 수 있게 만들어 주는 셸 스크립팅 도구입니다.

Windows PowerShell 세션은 시작할 때마다 $profile 변수가 참조하는 특수한 파일에 있는 명령을 모두 실행합니다. 셸에서 dir $profile을 실행하면 이 파일이 어디 있는지 볼 수 있습니다.

필자의 $profile은 C:\Users\gshields\Documents\WindowsPowerShell 폴더에 있는 Microsoft.PowerShell_profile.ps1(그림 2)입니다. 잘 사용하는 텍스트 편집기에서 이 문서를 편집해서 연결 명령 5개를 추가할 수 있습니다. 이제 Windows PowerShell을 시작할 때마다 사용자 이름과 암호만 입력하면 자동으로 Office 365에 연결되고 사용자의 네트워크에서 필요한 작업이 수행됩니다.

The $profile view

그림 2 $profile

힘에는 책임이 따르는 법

이러한 단계를 따라 로컬 및 원격 리소스를 관리할 수 있는 매끄럽게 병합된 작업 영역을 만들 수 있습니다. 이 작업 영역은 유용하지만 그만큼 위험할 수도 있습니다.

Get-Process | Stop-Process를 실행한 결과를 보고 재미있다고 생각했다면(실제로 하지는 마세요), Get-MsolUser | Remove-MsolUser가 어떤 일을 할 수 있을지 생각하면 몸서리가 쳐질 것입니다. 그러니 이 새로운 힘을 사용할 때는 그에 따르는 책임을 염두에 두도록 하십시오.

Greg Shields

Greg Shields는 Concentrated Technology의 임원이며 MVP입니다. ConcentratedTech.com에서 더 많은 Shields의 Jack-of-all-trades 팁을 살펴보십시오.

관련 콘텐츠