今天在公司的生產環境中有個需要用到powershell批量檢查office365用戶的操作,所以在這邊順便記錄的powershell連接office365的過程:
在連接之前,需要安裝兩個工具:1、Office 365 Sign-In Assistanthttp://www.microsoft.com/en-us/download/details.aspx?id=28177
2. Office 365Powershell http://technet.microsoft.com/library/jj151815.aspx
安裝完成之後。使用管理員身份運行windows powershell(若不以管理員身份運行,則後續的命令執行後會報錯!)
啓動之後,首先確定ps是否配置爲運行腳本。輸入:Get-ExecutionPolicy
若已配置,則應該如下圖顯示:
若沒有配置,則應該首先配置爲運行腳本,輸入:Set-ExecutionPolicy RemoteSigned
確定之後,創建ps憑據對象:$credential = Get-Credential
執行之後,則會彈出一個對話框,輸入office365的賬號名和密碼(必須要有全局管理員權限)
點擊確定之後,將不會有任何提示。若想確定是否登錄成功,可以執行$credential,可以看到類似如下圖的返回結果
此時,請注意,Get-Credential cmdlet 只創建憑據對象,並不對您進行身份驗證,也不驗證您提供的用戶名和密碼是否正確。例如,假設您將用戶名錯誤鍵入爲“[email protected]”。如果確實如此,則 Get-Credential 將使用該用戶名創建憑據對象,並不會檢查該用戶名是否有效。在您真正使用憑據對象嘗試連接到 Office 365 之前,您不會知道自己創建的憑據對象是否真的有效。
下面連接到office365
首先需要導入office365模塊
Import-Module MsOnline
輸入Get-Module進行查詢
用上面創建的憑據對象連接到office365
Connect-MsolService -Credential $credential
連接完成之後,輸入Get-MsolDomain 利用返回結果驗證是否連接成功
這一步連接成功之後,就可以按照需要連接sharepoint online/lynconline/exchange online
可參考:http://technet.microsoft.com/zh-CN/library/dn568015.aspx
今天因爲需要,需要連接到exchange online。
創建遠程ps與exchange online的會話
$exchangeSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://outlook.office365.com/powershell-liveid/" -Credential $credential -Authentication "Basic" -AllowRedirection
在這一步執行的時候報了一個錯誤,後來確定了一下,上條命令中:https://outlook.office365.com的地址爲全球版office365的exchange online的地址,而我的產品訂閱的爲世紀互聯運營的中國版的office365,所以需要將上述地址替換爲:https://partner.outlook.cn。
執行之後,導入遠程會話:Import-PSSession $exchangeSession
若運行正常,則可以看到以下命令
運行以下命令:Get-AcceptedDomain
若返回以下,則表示連接成功,可以進行管理了
本次需求是已經利用exchange online的管理界面創建了很多通訊組(包含通訊組和動態通訊組),查詢某一動態通訊組成員。
例如:查詢系統服務部的成員
$DDG = Get-DynamicDistributionGroup 系統服務部
Get-Recipient -RecipientPreviewFilter $DDG.RecipientFilter
PS:第一個命令使用 $DDG 變量存儲動態通訊組對象,第二個命令使用 Get-Recipient cmdlet 來列出符合爲動態通訊組定義的條件的收件人。
從返回結果中查詢到有部分人員並沒有包含在系統服務部中,按照規則,應該是部門選項卡爲添加具體值,那麼在企業中肯定有類似的用戶缺少部門選項卡的值,我們首先來查看下哪些用戶的部門值爲空
在網頁管理中爲缺少該值的用戶添加之後,確認,修改完成。