﻿# 使用 Windows PowerShell 如何自動登入 Office365 進行管理

先前講過幾篇關於使用 Windows PowerShell 管理微軟線上服務與 Exchange Online 的方法，不熟悉的人可能要先看過【[Office 365 管理系列：使用 PowerShell 管理微軟線上服務](/post/2013/01/26/Office-365-Administration-Using-PowerShell-manage-Microsoft-Online-Service.aspx)】以及【[Office 365 管理系列：用 PowerShell 管理 Exchange Online](/post/2013/02/01/Office-365-Administration-Using-PowerShell-manage-Exchange-Online.aspx)】文章。由於我們希望能自動化一些管理工作，不過每次執行 [Connect-MsolService](http://technet.microsoft.com/en-us/library/dn194123.aspx) 命令時，總是會要求手動輸入帳密登入，這樣我們怎樣才能將常見的管理工作完全自動化呢？因此，我今天要分享一個 Windows PowerShell 的小技巧，讓你可以在登入微軟線上服務或 Office 365 的時候，完全不需要輸入帳號、密碼，就能夠自動登入，並執行你想執行的管理命令。  
  
**\>>** 要試用 Office 365 的朋友，可點擊 [**Office 365 Enterprise E3 試用版 - 30 天期**](https://portal.microsoftonline.com/partner/partnersignup.aspx?type=Trial&id=fadd7328-2d11-41b4-8943-60db093c8458&msppid=811392) 進行申請喔 **<<  
**

我們先來回憶一下，使用 [Connect-MsolService](http://technet.microsoft.com/en-us/library/dn194123.aspx) 命令連接微軟線上服務時，總是會要求手動輸入帳密：

![alt](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/0068092c1c15532b8f61-image_2055.png "title")

事實上，你可以利用以下命令，先將你的帳號、密碼轉換成可被傳入 [Connect-MsolService](http://technet.microsoft.com/en-us/library/dn194123.aspx) 命令的參數，這樣就可以直接在不用互動的情況下登入成功：

```
$secpasswd = ConvertTo-SecureString "YOUR_PASSWORD" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("admin@example.com", $secpasswd)
$LiveCred = Get-Credential -Credential $mycreds
Connect-MsolService -Credential $LiveCred
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
Import-PSSession $Session

Remove-PSSession $Session
```

上述程式，我們一行一行說明如下：

1.  先將你要登入**微軟線上服務**的密碼，轉換成 [PSCredential](http://msdn.microsoft.com/Library/ms572524.aspx) 類別需要的 SecureString 型別參數
2.  然後建立出一個 [PSCredential](http://msdn.microsoft.com/Library/ms572524.aspx) 物件，並指定帳號、密碼
3.  然後透過 [Get-Credential](http://technet.microsoft.com/en-us/library/hh849815.aspx) 命令取得一個 [Connect-MsolService](http://technet.microsoft.com/en-us/library/dn194123.aspx) 命令所需的 credential 物件
4.  執行 [Connect-MsolService](http://technet.microsoft.com/en-us/library/dn194123.aspx) 命令，並直接登入 (不會跳出輸入帳號密碼的對話框)
5.  接著就是建立一個 [PSSession](http://msdn.microsoft.com/en-us/library/system.management.automation.runspaces.pssession\(v=vs.85\).aspx) 物件
6.  執行匯入 Exchange Online 的所有 Cmdlets
7.  最後一個則是要結束本次 Session 時，必須執行的動作!  
    **請注意**: 在 Exchange Online 同時間不可超過三人同時用 Windows PowerShell 登入進行管理，所以如果沒有正常登出，且 15 分鐘內又執行多次的話，就會導致無法連接成功的錯誤!

接著你只要把你想要一次執行完的指令都寫進指令檔 ( \*.ps1 )，然後再建立一個捷徑，未來就可以直接用滑鼠雙擊 ( Double Click ) 該捷徑，即可批次將所有指令執行完畢，是不是很方便呢！ (^\_^)

捷徑的目標設定範例如下 ( 假設 **捷徑** 與 **AutoLogin.ps1** 指令檔放在同一個目錄下 ) ：

```
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoExit -Command ". '.\AutoLogin.ps1'"
```

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/86b26f0e1ff83ebbbe4f-image_2056.png)

**\>>** 要試用 Office 365 的朋友，可點擊 [**Office 365 Enterprise E3 試用版 - 30 天期**](https://portal.microsoftonline.com/partner/partnersignup.aspx?type=Trial&id=fadd7328-2d11-41b4-8943-60db093c8458&msppid=811392) 進行申請喔 **<<**

**相關連結**

-   [PowerShell - How to create a PSCredential object](https://learn.microsoft.com/en-us/archive/blogs/koteshb/powershell-how-to-create-a-pscredential-object)
