ご訪問ありがとうございます。
Googleシートマスターのひろしです。
前回は、「Microsoft Graph PowerShell SDK」を使用して
パスコードの変更や、ユーザーの表示名を一括で行いました。
今回は、ユーザーの生成およびグループへの登録をCSVファイルを使用して
一括で行います。
これは、ずーっとやりたかったのですが、何よりPowershellの文法自体がわからず
二の足を踏んでいました。
しかしながら、PowerShell自体のスタディを行いバッチリの状態で
望みました。
基本的には、Copilotで結構いい感じでスクリプトを吐き出してくれました。
ユーザの生成とグループへの登録
環境構築
Powershellの起動

Microsoft Graph SDKのインストール

Microsoft Graphに接続

ユーザー生成
登録するファイル
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 に格納
最後までご覧いただきありがとうございます。
つぎはこちら

コメント