office 365 command shell 大量修改用戶資料

網課開始,學校就開始需要用365平台進行學習,一年過去了,新的一年又來了,office 365並不像google 那般簡單上載一個csv 上去就幫你修改了資料,而是要你用自己的ad同步,或者就是你用command shell 來大量修改,對學校來說還真是一個難度,因為很多同工詢問如何大量修改teams 用戶名稱,在這裡寫上筆記,希望對office 365大量修改用戶資料提供參考資料。

首先安裝必要的插件支援
下面網頁介紹
https://docs.microsoft.com/en-us/previous-versions/azure/jj151815(v=azure.100)?redirectedfrom=MSDN

需要安裝

Microsoft Online Services Sign-In Assistant for IT Professionals RTW

https://go.microsoft.com/fwlink/?linkid=286152

Azure Active Directory Module for Windows PowerShell (64-bit version) https://go.microsoft.com/fwlink/p/?linkid=236297

安裝完後,在windows 10 尋找windows powershell ISE(這個方便選擇文件), 右鍵選擇系統管理員執行

powershell 有特定的政策,Restricted, AllSigned, RemoteSigned, and Unrestricted,預設是Restricted
假如你第一次進入,需要把政策修改一下為unrestricted
輸入

Set-ExecutionPolicy Unrestricted

按Y 確認

接著開始連接到office 365

輸入

Connect-MsolService

按enter 後悔跳出跟Office 365 一樣的登入窗口,使用office 365 系統管理員登入
成功後,可以測試一下是否連接成功了,輸入一個command 測試

Get-MsolUser -EnabledFilter EnabledOnly -MaxResults 20

上面是列出用戶名單最多 20 個啟動用戶
假如能列出名單,說明你已經成功連接,接著如何做,首先去
https://docs.microsoft.com/en-us/powershell/module/msonline/?view=azureadps-1.0#msonline

這個是官方的MsolUser 說明,所有指令都在這裡說明,下面介紹常用的幾個指令
增添新用戶 New-MsolUser

https://docs.microsoft.com/en-us/powershell/module/msonline/new-msoluser?view=azureadps-1.0

根據官方說明,很簡單

New-MsolUser -UserPrincipalName “davidchew@contoso.com” -DisplayName “David Chew” -FirstName “David” -LastName “Chew”

-UserPrincipalName 這個是經常會用的,是用戶唯一識別,除了用戶id外,就是用戶的登入郵箱
你可以看到,指令格式是用 “-” 加“Parameters” 在加你要輸入的值,單一值需要使用引號,需要輸入什麼內容,可以查看說明加上去
例如說明是否強制要求用戶修改密碼[-ForceChangePassword <Boolean>], 這個boolean 就是你要輸入true 或者false

New-MsolUser -UserPrincipalName “davidchew@contoso.com” -DisplayName “David Chew” -FirstName “David” -LastName “Chew” -Password “Bac12345” -ForceChangePassword $False

上面就是為用戶設置了預設密碼,而且無需用戶登入時修改密碼

假如你添加後發現有錯了,那麼你可以使用Set-MsolUser 來修改
Set-MsolUser -UserPrincipalName “davidchew@contoso.com” -ForceChangePassword $True

Set-MsolUser 必須要找到用戶,因此第一個必須先指定-UserPrincipalName ,上面指引說是用戶登入時必須修改一次密碼

以上是單一修改用戶例子,如何使用csv 檔案來一次添加或者修改更多用戶呢?方法就是使用Import-CSV和ForEach-Object 來執行匯入循環查詢修改,下面是一個例子
首先需要準備一個csv 檔案,你可以上office 365 admin 匯入用戶那下載,自己建立一個也可以有一些特定的欄目是必須的,例如 UserPrincipalName,
我們在csv檔案第一行打上 UserPrincipalName,FirstName,LastName,DisplayName,NewPassword
然後填上需要的資料,可以先測試2-3 個資料,然後放到電腦裡面,例如C:\根目錄叫365user.csv,假如你用excel建立這個檔案,記得匯出成為csv。
然後我們就開始執行

Import-CSV –Path C:\365user.csv | ForEach-Object { New-MsolUser -UserPrincipalName $_.UserPrincipalName -FirstName $_.FirstName -LastName $_.LastName -DisplayName $_.DisplayName –Password $_.NewPassword -ForceChangePassword $False -UsageLocation “HK”}

上面指令我加上不要求修改密碼,還有加入了-UsageLocation “HK” 用戶區域,加入這個主要是添加授權的時候,這個是必須的而且這個說明是{two-letter country code}

假如成功匯入後,發現要修改用戶姓名,同樣道理,我們把New-MsolUser 改為Set-MsolUser

Import-CSV –Path C:\365user.csv | ForEach-Object { Set-MsolUser -UserPrincipalName $_.UserPrincipalName -FirstName $_.FirstName -LastName $_.LastName -DisplayName $_.DisplayName}

最後介紹如何添加用戶授權,首先我們先瀏覽一下自己有什麼授權,可以使用指令瀏覽
Get-MsolSubscription
這裡會列出你的授權名稱,假如你不是很了解用戶給了那些授權,你可以先去office 365 給特定用戶賦予授權,然後使用指令查看他拿了那個授權,例如

Get-MsolUser -UserPrincipalName “davidchew@contoso.com” | select -ExpandProperty licenses

他就會列出用戶已經獲得的授權,然後就直接給,因為授權一般是單一,所以可以直接使用舊的csv 檔案用戶帳號直接賦予授權,例如

Import-CSV –Path C:\365user.csv | ForEach-Object { Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -AddLicenses “ABCDEFG:STANDARDWOFFPACK_STUDENT” }

這裡ABCDEFG是一個例子,每個機構不一樣,後面的授權名稱也根據自己買的不一樣,STANDARDWOFFPACK_STUDENT 是學生A1 授權

改到這裡,基本上用戶的操作到這裡,假如還需要其他修改,建議看看說明書,裡面有例子,也建議看幾個測試用戶來測試修改,成功了才套用到所有用戶上去。