先前講過幾篇關於使用 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 命令連接微軟線上服務時,總是會要求手動輸入帳密:
事實上,你可以利用以下命令,先將你的帳號、密碼轉換成可被傳入 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
上述程式,我們一行一行說明如下:
- 先將你要登入微軟線上服務的密碼,轉換成 PSCredential 類別需要的 SecureString 型別參數
- 然後建立出一個 PSCredential 物件,並指定帳號、密碼
- 然後透過 Get-Credential 命令取得一個 Connect-MsolService 命令所需的 credential 物件
- 執行 Connect-MsolService 命令,並直接登入 (不會跳出輸入帳號密碼的對話框)
- 接著就是建立一個 PSSession 物件
- 執行匯入 Exchange Online 的所有 Cmdlets
- 最後一個則是要結束本次 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 天期 進行申請喔 <<
相關連結