Microsoft365 ユーザー生成とグループ登録をCSVファイルで一括で行う

Microsoft365

Microsoft365の一覧

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回は、「Microsoft Graph PowerShell SDK」を使用して
パスコードの変更や、ユーザーの表示名を一括で行いました。

今回は、ユーザーの生成およびグループへの登録をCSVファイルを使用して
一括で行います。

これは、ずーっとやりたかったのですが、何よりPowershellの文法自体がわからず
二の足を踏んでいました。

しかしながら、PowerShell自体のスタディを行いバッチリの状態で
望みました。

基本的には、Copilotで結構いい感じでスクリプトを吐き出してくれました。

 

ユーザの生成とグループへの登録

 

環境構築

Powershellの起動

Microsoft365 パスコード、表示名のCSVファイルによる一括変更(Microsoft Graph SDK)
前回は、Microsoft365のパスコードを 一括で変更する方法についてお伝えしました。 しかしながら、最近(2025年5月)コマンドがエラーなるようになってしまいました。 PS C:\Windows\System32> Connect-...

Microsoft Graph SDKのインストール

Microsoft365 パスコード、表示名のCSVファイルによる一括変更(Microsoft Graph SDK)
前回は、Microsoft365のパスコードを 一括で変更する方法についてお伝えしました。 しかしながら、最近(2025年5月)コマンドがエラーなるようになってしまいました。 PS C:\Windows\System32> Connect-...

 

Microsoft Graphに接続

Microsoft365 パスコード、表示名のCSVファイルによる一括変更(Microsoft Graph SDK)
前回は、Microsoft365のパスコードを 一括で変更する方法についてお伝えしました。 しかしながら、最近(2025年5月)コマンドがエラーなるようになってしまいました。 PS C:\Windows\System32> Connect-...

ユーザー生成

登録するファイル

C:\temp\user.csv

UserPrincipalName,DisplayName,Password
test009@joyoedu.onmicrosoft.com,九太郎,pass1234
test010@joyoedu.onmicrosoft.com,銃太郎,pass1234

 

スクリプト

#ユーザーを作成

Import-Csv ".\user.csv" | ForEach-Object {
  $userParams = @{
    AccountEnabled = $true
    DisplayName = $_.DisplayName
    MailNickname = ($_.UserPrincipalName -split "@")[0]
    UserPrincipalName = $_.UserPrincipalName
    PasswordProfile = @{
      Password = $_.Password
      ForceChangePasswordNextSignIn = $false
    }
    UsageLocation = "JP"
  }
}

グループへの追加

グループ名に該当するIDを取得する必要あり

グループIDの取得方法

Get-MgGroup -All > group.txt

これで「group.txt」にすべてのグループIDが出力されます。

こんな感じ

DisplayName             Id                                   MailNickname           Description                                                              

———–             —                                   ————           ———–                                                              

MS                      0043xxxx-4fe8-4373-bbba-3e17xx073e21 MS                     MS              

 

スクリプト

例)

カレントフォルダの「user.csv」を元にユーザーを作成 グループ1とグループ2に追加




# グループ1 IDを指定(対象のグループのObject ID)
$groupId = "XXXX8c43-8e66-479d-8c28-18e8227c7568"    #1つ目のグループID

# グループ2 2個目のグループID
$groupId2 = "XXXXeea7-8d17-471b-857e-5ed7b1d80d80"    #2つ目のグループID


#ユーザーを作成しグループに追加
Import-Csv ".\user.csv" | ForEach-Object {
    $userParams = @{
        AccountEnabled = $true
        DisplayName = $_.DisplayName
        MailNickname = ($_.UserPrincipalName -split "@")[0]
        UserPrincipalName = $_.UserPrincipalName
        PasswordProfile = @{
            Password = $_.Password
            ForceChangePasswordNextSignIn = $false
        }
        UsageLocation = "JP"
    }
    $user = New-MgUser @userParams
    $upn = $_.UserPrincipalName

    try {
       write-output $user
       # 1つめのグループに追加
       New-MgGroupMember -GroupId $groupId -DirectoryObjectId $user.Id
       $group = Get-MgGroup -GroupId $groupId
       $getdisplayname =  $group.DisplayName
       Write-Host "✅ $upn を $getdisplayname に追加しました"
 
       # 2つめのグループに追加
       New-MgGroupMember -GroupId $groupId2 -DirectoryObjectId $user.Id
       $group = Get-MgGroup -GroupId $groupId2
       $getdisplayname =  $group.DisplayName
       Write-Host "✅ $upn を $getdisplayname に追加しました"
   }
    catch {
        Write-Warning "⚠️ $upn の処理中にエラーが発生しました: $_"
    }
}

 

Powershellの主なコマンド

コメント

$   変数

 $_.  CSVファイルから読み込んだ値

             例)        
$upn = $_.UserPrincipalName   #CSVファイルの「UserPrincipalName」の要素を変数 $upn に格納

 

 

最後までご覧いただきありがとうございます。

つぎはこちら

Microsoft365 パスコード、表示名のCSVファイルによる一括変更
今回は、Microsoft365のパスコードを 一括で変更する方法についてお伝えします。 数件変更するだけであれば、Azureを使用 すればいいのですが、大量に変更する必要が ありそうなので調べました。 結論としてCSVファイルを作って ち...

Microsoft365の一覧

コメント

タイトルとURLをコピーしました