The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

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

先前講過幾篇關於使用 Windows PowerShell 管理微軟線上服務與 Exchange Online 的方法,不熟悉的人可能要先看過【Office 365 管理系列:使用 PowerShell 管理微軟線上服務】以及【Office 365 管理系列:用 PowerShell 管理 Exchange Online】文章。由於我們希望能自動化一些管理工作,不過每次執行 Connect-MsolService 命令時,總是會要求手動輸入帳密登入,這樣我們怎樣才能將常見的管理工作完全自動化呢?因此,我今天要分享一個 Windows PowerShell 的小技巧,讓你可以在登入微軟線上服務或 Office 365 的時候,完全不需要輸入帳號、密碼,就能夠自動登入,並執行你想執行的管理命令。

>> 要試用 Office 365 的朋友,可點擊 Office 365 Enterprise E3 ���用版 - 30 天期 進行申請喔 <<

我們先來回憶一下,使用 Connect-MsolService 命令連接微軟線上服務時,總是會要求手動輸入帳密:

alt

 

事實上,你可以利用以下命令,先將你的帳號、密碼轉換成可被傳入 Connect-MsolService 命令的參數,這樣就可以直接在不用互動的情況下登入成功:

$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 類別需要的 SecureString 型別參數
  2. 然後建立出一個 PSCredential 物件,並指定帳號、密碼
  3. 然後透過 Get-Credential 命令取得一個 Connect-MsolService 命令所需的 credential 物件
  4. 執行 Connect-MsolService 命令,並直接登入 (不會跳出輸入帳號密碼的對話框)
  5. 接著就是建立一個 PSSession 物件
  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'"

 

 

>> 要試用 Office 365 的朋友,可點擊 Office 365 Enterprise E3 試用版 - 30 天期 進行申請喔 <<

相關連結