Microsoft Graph PowerShell 設定M365的使用者

發現M365 powershell 又停用了一些,其實真的好煩,網頁界面只能一次更新40位,沒辦法就要繼續學習,看了一下docs,powershell 轉移到Graph,例如之前能用的Set-MsolUserLicense 已經失效,需要使用microsoft graph 來更新。假如你不懂得,可以考慮使用Entra ID 來更新用戶

在 Azure 入口網站 中大量建立使用者 – Microsoft Entra ID | Microsoft Learn

安裝Graph PowerShell

Install-Module Microsoft.Graph -Scope CurrentUser -Repository PSGallery -Force

假如想指定某些 版本也可以使用

Install-Module -Name Microsoft.Graph -Scope CurrentUser -RequiredVersion 2.5.0

成功後就要開始登入進行授權,一般是使用 Connect-MgGraph,不過這樣直接登入只是查詢,基本權限很低,所以要登入並要求更多權限

Connect-MgGraph -Scopes "User.ReadWrite.All","Organization.Read.All","Team.ReadBasic.All"

這樣就成功了,接下來就是更新授權了,我看了一些外國的代碼,高手都寫成script,不過我一年只做一次就不折騰了,還是用csv 更新。有一些欄目名不太一樣,例如UserPrincipalName 換成了UserId,我懶得換原來的csv titile ,就只是命令那邊更換了UserId,csv 那邊title 就繼續使用UserPrincipalName ,在Grphy 這邊可以先看看一個用戶的授權碼,命令如下:

Get-MgUserLicenseDetail -UserId davidchew@contoso.com

我這次因為要批量去刪除授權,所以就想看了一下賬號有什麼授權,然後就讀取SkuId,然後就只根據csv 的賬號列表去刪除Skuid 資料

Import-Csv C:\rmlic.csv  | ForEach-Object {Set-MgUserLicense -UserId $_.UserPrincipalName -RemoveLicenses "Sukid號碼" -AddLicenses @()}

假如想增加授權就是RemoveLicenses 改成AddLicenses ,後面-AddLicenses @() 改成 –RemoveLicenses @() 就可以了,最後登出Disconnect-MgGraph

可以參考一下外國資料,很詳細,下面是我看的文章:

Manage Microsoft 365 Licenses with the Microsoft Graph PowerShell SDK (practical365.com)

Microsoft Graph PowerShell SDK: User and Group Operations (practical365.com)

還有寫好的Script

GitHub – 12Knocksinna/Office365itpros: Office 365 for IT Pros PowerShell examples

群組

Manage security groups with PowerShell – Microsoft 365 Enterprise | Microsoft Learn

賬號

Create Microsoft 365 user accounts with PowerShell – Microsoft 365 Enterprise | Microsoft Learn

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 授權

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