はじめに
こんにちは、くらっちです。
今回はPowerShell で「ユーザーを新規作成&ライセンスも付与」してみよう!
ということでサンプルコードを作りました。
初心者向けの備忘録的な記事となります。
やろうとしていること
ユーザー情報が記載されたcsvファイルを読み込んでユーザーを一括登録します。
csvファイルには「UserPrincipalName、FirstName、LastName」のみ記載。
パスワードは「p@ss + MMdd」で固定、初期ログイン時に変更必須。
付与するライセンスは「Microsoft Business Basic」で固定。
サンプルコード
下記サンプルコードは、基本そのまま利用できます。
適宜<>の中身は修正してください。
読み込むcsvファイルは「UTF-8」形式にしてください。
#Set-MgUserLicense に必要なアクセス許可 Connect-Graph -Scopes User.ReadWrite.All, Organization.Read.All #Get-MgUser に必要なアクセス許可 Connect-MgGraph -Scopes User.Read.All $times = Get-Date -Format "yyyyMMddHHmmdd" $todays = Get-Date -Format "MMdd" $csvpath = "<import_filepath>\users.csv" #csvファイルを読み込んで繰り返し処理 Import-Csv -Path $csvpath | ForEach-Object { #ユーザーを新規作成 New-MgUser -UserPrincipalName $_.UserPrincipalName -mailNickname "sample" -AccountEnabled -DisplayName "$($_.FirstName) $($_.LastName)" -GivenName $_.LastName -Surname $_.FirstName -UsageLocation "JP" -PasswordProfile @{ "Password"="p@ss$todays"; "forceChangePasswordNextSignIn" = $true } #新規作成したユーザー情報を取得 $user = Get-MgUser -All -Filter "UserPrincipalName eq '$($_.UserPrincipalName)'" $userid = $user.ID #「O365_BUSINESS_ESSENTIALS」の ライセンス情報を取得 $EmsSku = Get-MgSubscribedSku -All | Where-Object SkuPartNumber -eq 'O365_BUSINESS_ESSENTIALS' #ライセンス付与 Set-MgUserLicense -UserId $userid -AddLicenses @{SkuId = $EmsSku.SkuId} -RemoveLicenses @() }
このエラーが出た場合どうする?
New-MgUser : 引数 'True' を受け入れる位置指定パラメーターが見つかりません。
$true の記載が不要な場所に $true が入力されている可能性があります。
New-MgUser : Another object with the same value for property userPrincipalName already exists.
登録しようとしたユーザーは既に組織に存在しているようです。
※userPrincipalName の重複あり。
Set-MgUserLicense : Subscription with SKU … does not have any available licenses.
付与しようとしたライセンスに余りがない可能性があります。
ライセンスを追加購入して処理を実行しましょう。
参考
・ New-MgUser (Microsoft.Graph.Users) | Microsoft Learn
・ Get-MgUser (Microsoft.Graph.Users) | Microsoft Learn
・ Get-MgSubscribedSku (Microsoft.Graph.Identity.DirectoryManagement) | Microsoft Learn
・ Set-MgUserLicense (Microsoft.Graph.Users.Actions) | Microsoft Learn