﻿# Office 365 管理系列：用 PowerShell 管理 Exchange Online

接續上次【[Office 365 管理系列：使用 PowerShell 管理微軟線上服務](/post/2013/01/26/Office-365-Administration-Using-PowerShell-manage-Microsoft-Online-Service.aspx)】文章，這次我繼續寫如何透過 PowerShell 管理 Exchange Online 服務，而在本篇文章開始之前，各位千萬務必先看過前次文章，否則環境將無法成功建立。在未來，我也會分享許多 Office 365 與 Exchange Online 的 PowerShell 管理技巧，到時都需要參考本篇文章的設定。  
  
\>>> [試用 Office 365 的申請連結](https://portal.microsoftonline.com/partner/partnersignup.aspx?type=Trial&id=558ffb55-88f4-44d5-badb-09ffed1cdeb5&msppid=811392) <<<

在開啟 Windows PowerShell 之後，我們必須連入 Exchange Online 管理工作階段，因此必須下達一些指令，完成管理 Exchange Online 所需的環境的設定：

1\. 執行以下命令，執行時會跳出一個讓你輸入 Office 365 管理者帳號密碼的視窗：

```
$LiveCred = Get-Credential
```

  ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/9195da5439ae8b96d691-image_1820.png)

2\. 接下來輸入這行蠻長的指令，直接 Copy / Paste 就可以了。這段指令主要用途是取得一個新的 PSSession ( PowerShell Session )，也就是他會直接從 [https://ps.outlook.com/powershell/](https://ps.outlook.com/powershell/ "https://ps.outlook.com/powershell/") 取得一整套 Exchange Online 所需的 Cmdlets，並存入 $Session 變數中：

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

  ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/1642a16d447680782877-image_1821.png)

3\. 執行下列命令，匯入上一步取到的 PowerShell 工作階段 ( Exchange Online )，好讓你能在目前的 PowerShell 工作階段中執行這些 Cmdlets 命令。你會從畫面上看見匯入 Cmdlets 的過程：

```
Import-PSSession $Session
```

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/a2ad6778fd9eeb1ee23d-image_1822.png)

匯入成功後，會顯示一個模組名稱，這個模組名稱每次都會不一樣：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/c3cafe39bf96688f79b9-image_1823.png)

如果你想要知道該模組到底匯入了那些 Cmdlets 命令，可以下達以下指令：

```
Get-Command -Module tmp_epdsnzll.cxb
```

**註 1**：請記得上述指令中，模組名稱每次匯入 Cmdlets 都會不一樣喔！  
**註 2**：還有，不同的 Office 365 管理帳號，可能會因為權限不同，而匯入不同數量的 Cmdlets 命令喔！

**使用範例：取得 Exchange Online 信箱資訊**

匯入 Exchange Online 的那些 Cmdlets 命令後，只要輸入 **Get-Mailbox** 就可以取得所有組織內的信箱。

[![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/9f83ea2fa3267bb3320b-image_thumb_121.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/6145105a424448883c5d-image_1824.png)

如果想得知特定信箱的完整資訊，可以輸入以下指令： ( 假設帳號名稱為 **test** )

```
Get-Mailbox test | Format-List
```

**中斷 Exchange Online 管理工作階段**

最後，剛管理作業結束後，請不要直接關閉 Windows PowerShell 視窗，而是利用以下指令「明確移除」目前匯入的管理工作階段：

```
Remove-PSSession $Session
```

**註**：如果你沒有 **中斷 Exchange Online 管理工作階段** 就關閉 Windows PowerShell 視窗，你目前的連線將會在 Exchange Online 的伺服器上維持開啟狀態長達 15 分鐘。重點是，一個帳戶一次最多只能有 3 管理用的工作階段連線，如果連續執行超過 3 次的話，可能會導致有 15 分鐘內無法再次連接。如果不會管理，直接關閉 Windows PowerShell 視窗應該沒關係。

\>>> [試用 Office 365 的申請連結](https://portal.microsoftonline.com/partner/partnersignup.aspx?type=Trial&id=558ffb55-88f4-44d5-badb-09ffed1cdeb5&msppid=811392) <<<

**相關連結**

-   [將 Windows PowerShell 連線到服務](https://learn.microsoft.com/en-us/powershell/exchange/connect-to-exchange-online-powershell)
-   [PowerShell Cmdlet 在 Exchange Online 中可用的參考](https://learn.microsoft.com/en-us/powershell/module/exchangepowershell/)
