Microsoft Graph PowerShellでExchangeOnlineユーザ作成とライセンス付与

2023年3月はMSOnlineを使ってMicrosoft365のユーザ作成・Officeライセンスの付与を行っておりましたが、ライセンス付与コマンドの廃止に伴い試行錯誤の末、なんとかできるようになったのでコマンドをコピペの備忘録となります。何度もつまづきながらでやっと出来た。という感じなのでコマンド、インストール等間違っているおそれあります。

IDについては作成-削除を複数回おこなっているため同じUserPrincipalNameでも違う値が表示されています。悪しからず。

記事中の架空アカウント

アカウント情報(以下は当然ながら実在しない当記事の例となります
表示名:ほげ_ほげお
SurName 姓:ほげ
Given name 名:ほげお
メールアドレス:hoge.hogeo@hoge.com
パスワード:Passw@d
配布リスト(メーリングリストと同意)のCSV

PowerShell-7.4.1-win-x64のインストール

新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows
とあったので、ダウンロードしてインストール実行 初回のみ

 

PowerShell64bit版を管理者として実行する

 

Microsoft Graph SDKのインストール

初回のみ必要(と思う)適用完了までじっと待ちます。

Install-Module Microsoft.Graph

Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its
InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from
'PSGallery'?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): A

Microsoft Graph は、Microsoft 365 のデータとインテリジェンスへの入り口です。 Microsoft Graph は、Microsoft 365、Windows、および Enterprise Mobility + Security の膨大な量のデータにアクセスする際に使用できる統合型プログラミング モデルを提供します。 Microsoft Graph を通じてアクセスできる豊富なデータを使用して、何百万人ものユーザーと対話する組織とコンシューマー向けのアプリを構築する

Microsoft Graphへの接続(管理者の資格情報を使用)

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

OAuth2.0 認証が必要 契約しているテナントの管理アカウントとパスワードを入力する。

 

Connected via delegated access using 14d82eec-204b-4c2f-b7e8-296a70dab67e
Readme: https://aka.ms/graph/sdk/powershell
SDK Docs: https://aka.ms/graph/sdk/powershell/docs
API Docs: https://aka.ms/graph/docs

NOTE: You can use the -NoWelcome parameter to suppress this message.

ユーザ作成

New-MgUser -DisplayName "ほげ_ほげお" -SurName "ほげ" -GivenName "ほげお" -UserPrincipalName hoge.hogeo@hoge.com -UsageLocation JP -Country JP -PreferredLanguage ja-JP -PasswordProfile @{ForceChangePasswordNextSignIn = $false; Password = "Passwo@d"} -MailNickname hoge.hogeo -AccountEnabled

DisplayName Id Mail UserPrincipalName
----------- -- ---- -----------------
ほげ_ほげお 0c1bf4b2-4c3a-47f5-a749-8d5980930640 hoge.hogeo@hoge.com

ユーザ情報取得

Get-MgUser -UserId hoge.hogeo@hoge.com

DisplayName Id Mail UserPrincipalName
----------- -- ---- -----------------
ほげ_ほげお fe331117-7698-4cd4-a06f-94f4a1c81be4 hoge.hogeo@hoge.com hoge.hogeo@hoge.jp

ライセンス付与(Microsoft365 Bussiness Standard)

$License1 = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphAssignedLicense -Property @{SkuId = "f245ecc8-75af-4f8e-b61f-27d8114de5f3"};

Set-MgUserLicense -UserId "hoge.hogeo@hoge.com" -AddLicenses @($License1) -RemoveLicenses @();

DisplayName Id Mail UserPrincipalName
----------- -- ---- -----------------
ほげ_ほげお 0c1bf4b2-4c3a-47f5-a749-8d5980930640 hoge.hogeo@hoge.com hoge.hogeo@hoge.com

 

割当が全くないユーザにはこちらの1行でライセンス付与できる。

Set-MgUserLicense -UserId hoge.hogeo@hoge.com-AddLicenses @{SkuId="f245ecc8-75af-4f8e-b61f-27d8114de5f3"} -RemoveLicenses @()

ライセンス情報の確認(参考)

Get-MgSubscribedSku | ft Id, SkuId, SkuPartNumber -Wrap

テナントユーザに割当てられているライセンス確認一覧

Get-MgUser -Filter 'assignedLicenses/$count ne 0' -ConsistencyLevel eventual -CountVariable licensedUserCount -All -Select UserPrincipalName,DisplayName,AssignedLicenses | Format-Table -Property UserPrincipalName,DisplayName,AssignedLicenses

Write-Host "Found $licensedUserCount licensed users."

UserPrincipalName DisplayName AssignedLicenses
----------------- ----------- ----------------
hoge.hogeo@hoge.com ほげ_ほげほげお {f245ecc8-75af-4f8e-b61f-27d8114de5f3}

ライセンスの削除(参考)

Set-MgUserLicense -UserId "hoge.hogeo@hoge.com" -AddLicenses @() -RemoveLicenses @("f245ecc8-75af-4f8e-b61f-27d8114de5f3")

ユーザの削除(参考)

Remove-MgUser -UserId "hoge.hogeo@hoge.com"

Microsoft Graph 切断

Disconnect-MgGraph

ClientId : ClientId 英数値の羅列
TenantId : TenantId 英数値の羅列
Scopes : {openid, Organization.Read.All, profile, User.ReadWrite.All…}
AuthType : Delegated
TokenCredentialType : InteractiveBrowser
CertificateThumbprint :
CertificateSubjectName :
Account : admin@hoge.com
AppName : Microsoft Graph Command Line Tools
ContextScope : CurrentUser
Certificate :
PSHostVersion : 7.4.1
ManagedIdentityId :
ClientSecret :
Environment : Global

参考にしたURL

Microsoft Graph SDK の概要

Connect-MgGraph

New-MgUser

Get-MgUser

Set-MgUserLicense

Remove-MgUser

Disconnect-MgGraph

Microsoft Graph PowerShell SDK を使用したライセンス管理操作の紹介

ライセンスのための製品名とサービス プラン 識別子

【 Set-MgUserLicense 】コマンドレット――Azure Active Directoryユーザーにライセンスを割り当てる

コメント