萬能技客: 以 Windows PowerShell 管理 Office 365

如果您從未想過您需要使用 Windows PowerShell 來管理 Office 365 之類的雲端應用程式,這裡有為完全新手提供的快速入門。

Greg Shields

我們公司 Concentrated Technology 最近完成了從 Google Apps for Business 轉換到 Microsoft Office 365 的大工程,移轉過程相當順暢。 我們使用一套簡單的協力廠商解決方案,每個使用者只用了兩組密碼再按個滑鼠按鍵,就順利將資料移轉到了全新的平台。

頓時間,我們發現自己處在一套嶄新的基礎結構,並且有全新一套規則。 就一群對 Microsoft 技術相當有經驗的人來說,我們對於 Windows PowerShell 在 Office 365 中暴露的程度有點措手不及。結合 Windows PowerShell 與 Office 365 的構想似乎有點不太搭。 但是人們尋求 Office 365 這類的解決方案有一部分是為了追求簡單。

雖說以 Windows PowerShell 來完成工作並不一定都很複雜,但也絕非易事。 最困難的部分可能是開始著手使用。 因此在這個月,我為完全新手整理了 Windows PowerShell for Office 365 快速入門。 遵循這些步驟學一些重要的 Cmdlet,您可能會發現「功能強大」和「簡單」不一定是相互對立的。

步驟 1: 熟悉 (真正的) 遠端執行

Windows PowerShell 功能真的很強大, 不過在學習過程中,新手常常會碰到學習困難點而不知所措; 這通常是發生在學會大多數基本 Cmdlet 之後,但尚未充分了解如何建立實用的解決方案之前。 執行 Get-Process 並查看處理程序在本機電腦上執行是一回事, 而對著一些遠端電腦銜接一系列 Cmdlet 來完成一些實際動作又是另外一回事。

我的建議是花一點時間在您本機 LAN 中了解 PowerShell 遠端功能的運作方式。 探索 –computerName 參數如何與某些 Cmdlet 搭配運作,還有有些 Cmdlet 為什麼必須使用 Invoke-Command。 另外也多熟悉 Get-Help 及其非常好用的 -exa 參數,來檢視範例。

Office 365 更是將功能進一步擴充,因此您必須具備這些技能,打下鞏固的基礎。 您將是對 Microsoft 伺服器而不是您自己的伺服器執行 Office 365 Cmdlet,並且是經由網際網路而不是您的 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 雲端。 連接到雲端需要五個麻煩但很直接的步驟:

1. 匯入新安裝的 Online Services 模組

2. 輸入 Office 365 認證

3. 建立遠端工作階段

4. 將該工作階段的命令匯入至本機 Windows PowerShell 工作階段

5. 連接到 Office 365 服務

完成此程序的五個命令看起來像這樣:

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

這個結構乍看之下可能很複雜,但是請記住: Window PowerShell 是設計供每個人靈活運用, 因此,有些命令不過是規模大一些罷了。 您應該知道這個結構可達成五件事: 首先,它使用 Import-Module 將 Office 365 Cmdlet 新增到您的工作階段,而讓您的本機工作階段能夠以 Office 365 的語言表達。

其次,會啟動一個對話方快要求您輸入 Office 365 使用者名稱和密碼 (看起來像這樣: username@domain.onmicrosoft.com)。 這項認證資訊會存放在變數 $O365Cred 中,讓您稍後再使用。

真正精彩的在後頭; 第三和第四個命令會在雲端內建立一個新的 Windows PowerShell 工作階段,位於 https://ps.outlook.com/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 清單。 您也可以在這裡找到方便使用的命令表和簡短說明。

這裡有個特別好用的 Cmdlet,可以用來變更 Office 365 密碼。 它會將密碼重設為 P@ssword!。 您也可以忽略 -NewPassword 參數,而自動隨機產生密碼:

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

這些 Cmdlet 全都與 Office 365 物件有關。 加入它們是管理與該些物件互動的 Exchange 資源的第二步。 Cmdlet 的數目似乎多到目不暇給,不過這裡有份實用的參考。

步驟 5: 設定檔使生活更輕鬆

步驟 3 中將您連接到雲端的五個命令的確是一大塊文字。 每次登入時要重新輸入這一大塊文字可能使 Windows PowerShell 使用起來似乎比不用還費力。 但是 Windows PowerShell (還有一般命令介面指令碼) 的作用在於,一件事只要做一次,之後就可以坐享其成。

Windows PowerShell 工作階段每次一開始,都會執行在變數 $profile 所參照的特殊檔案中找到的任何命令。 您可以在命令介面中執行 $profile 來檢視該檔案所在的位置。

我的 $profile 是 Microsoft.PowerShell_profile.ps1 檔案 (請參閱 [圖 2]),這是在 C:\Users\gshields\Documents\WindowsPowerShell 資料夾中。 您可以在最愛的文字編輯器中編輯這份文件,以新增到五個連接命令。 現在每當您啟動 Windows PowerShell 時,只要輸入使用者名稱和密碼,就可以自動連入 Office 365,還有網路上的一切。

The $profile view

[圖 2] $profile 檢視

能力越強,責任越大

您可以遵循這些步驟建立完美結合的工作區,並在當中管理本機和遠端資源。 這樣的工作區雖然實用,同樣也很危險。

如果您在第一次發現執行 Get-Process | Stop-Process (給您一個提示: 沒事別找麻煩) 的結果後暗自竊笑,等到知道 Get-MsolUser | Remove-MsolUser 有何本事肯定讓您聞之色變。 所以運用您新發現的能力必須小心, 要特別記住隨之而來的責任。

Greg Shields

Greg Shields 是一位 MVP,他是 Concentrated Technology 的合夥人。 若要了解更多 Shields 的萬事通秘訣與技巧,請造訪 ConcentratedTech.com

相關內容