どうもミツシマです。
前回「(Office365)各グループの作成をPowershellコマンドで実施する方法を検証してみた」でグループの作成を検証したので、今回は作成したセキュリティグループに一括でユーザーを追加する方法をPowershellコマンドで検証してみた。
(注)メールアドレスを持つグループや配布リスト等は別コマンドなので次回ご紹介予定である。
検証環境は以下の通り
PC:Windows10 Pro
もう一つ「Windows PowerShell 用 Microsoft Azure Active Directory モジュール (コマンドレット名に MSol が含まれる)」というのもあるが、個人的にGraph用の方がしっくり来るので。
(注)どちらのコマンドでも出来るはずである。
で試行錯誤して出来たスクリプトがこちら↓↓↓
グループにユーザーを追加するコマンドは「Add-AzureADGroupMember」
一括で設定するためにcsvファイルを作成して「Import-CSV」コマンドでやることが個人的によくあるが、今回は違う方法でやっている。
上記スクリプトファイルと同じフォルダ階層に「SecurityGroup」フォルダを作成し、そのフォルダに一括設定したいグループ名と同じテキストファイルを作成する。
後はテキストファイルの中に追加したいユーザー名(表示名)を1行ずつ入れていく!!
(注)ユーザープリンシパル名でなく、表示名!!
フォルダ階層はこんな感じ↓↓↓


上記例では「TEST管理 グループ.txt」・「TEST管理 グループ2.txt」・「TEST管理 グループ3.txt」を事前に作成している。
中身はこんな感じ↓↓↓
・TEST管理グループ.txt
これで準備OK!!
コマンドを実行すると「SecurityGroup」フォルダ配下のファイルを一覧で取得し、それぞれのファイル名(グループ名)を取得。
その後、実際に存在するAzureADのグループと突き合わせて「ObjectId」を取得する。
更にファイルを読み込んでユーザー名(表示名)を取得し、こちらも実際に存在するAzureADユーザーと突き合わせて「ObjectId」を取得する。
後は「Add-AzureADGroupMember」で追加している感じだ。
最後に追加されたか確認するために「Get-AzureADGroupMember」を実行している。
(注)実際に実行する際には一度「Add-AzureADGroupMember」はコメントアウトして、出力確認をみて正しいことを確認することをオススメする
実際に実行した画面がこちら↓↓↓


今回の検証はこれで終了。
次回はメールアドレスを持つグループの追加方法を検証した結果を載せたいと思う。
前回「(Office365)各グループの作成をPowershellコマンドで実施する方法を検証してみた」でグループの作成を検証したので、今回は作成したセキュリティグループに一括でユーザーを追加する方法をPowershellコマンドで検証してみた。
(注)メールアドレスを持つグループや配布リスト等は別コマンドなので次回ご紹介予定である。
検証環境は以下の通り
PC:Windows10 Pro
〜検証〜
今回使用するコマンドは「Graph 用 Azure Active Directory PowerShell (コマンドレット名に AzureAD が含まれる)」もう一つ「Windows PowerShell 用 Microsoft Azure Active Directory モジュール (コマンドレット名に MSol が含まれる)」というのもあるが、個人的にGraph用の方がしっくり来るので。
(注)どちらのコマンドでも出来るはずである。
で試行錯誤して出来たスクリプトがこちら↓↓↓
〜Add-AzureADGroupMember.ps1〜
#環境変数の設定
$CurrentFolder = Split-Path $MyInvocation.MyCommand.Path -Parent
$TxtFolderPath = $CurrentFolder + "\SecurityGroup\"
#「SecurityGroup」フォルダーがあるかどうかをチェックし、なければエラー表示で終了
If(-Not(Test-Path $TxtFolderPath)){
Write-Output "「SecurityGroup」が同じフォルダにありません。処理を中断します。"
pause
Exit
}
#AzureADへ接続
Connect-AzureAD | Out-Null
#「SecurityGroup」配下のファイル一覧出力
$AllTxtInfo = Get-ChildItem $TxtFolderPath
#全ユーザー情報と全グループ情報を取得
$AllAzureADUser = Get-AzureADUser
$AllAzureADGroup = Get-AzureADGroup
foreach($TxtInfo in $AllTxtInfo){
#ファイル名(グループ名)を取得する
$AzureADGroupName = [String]$TxtInfo.BaseName
#メンバーを追加する対象グループを取得
$AzureADGroup = $AllAzureADGroup | Where-Object {$_.DisplayName -eq $AzureADGroupName}
#ファイルを読み込む
$TxtContent = (Get-Content -Path $TxtInfo.PSPath) -as [string[]]
#ファイルを1行ずつ読みこんでユーザーをグループに追加する
foreach($AzureADUserName in $TxtContent){
#個別のユーザーオブジェクトIDを取得
$AzureADUser = $AllAzureADUser | Where-Object {$_.DisplayName -eq $AzureADUserName}
#出力確認
[String]$strMessage = "グループ「" + $AzureADGroup.DisplayName + "」にユーザー「" + $AzureADUser.DisplayName + "」を追加します."
Write-Output $strMessage
#グループにメンバーを追加
Add-AzureADGroupMember -ObjectId $AzureADGroup.ObjectId -RefObjectId $AzureADUser.ObjectId
}
#ユーザー追加後の情報確認
Write-Output "${AzureADGroupName}のメンバー一覧を表示します。"
Get-AzureADGroupMember -ObjectId $AzureADGroup.ObjectId | Select-Object ObjectId,DisplayName,UserPrincipalName,UserType | Sort-Object DisplayName | Format-Table
}
Write-Output "処理が完了しました."
pause
〜解説〜
事前準備としてPCで一回「Install-Module -Name AzureAD」を実行する必要アリ!グループにユーザーを追加するコマンドは「Add-AzureADGroupMember」
一括で設定するためにcsvファイルを作成して「Import-CSV」コマンドでやることが個人的によくあるが、今回は違う方法でやっている。
上記スクリプトファイルと同じフォルダ階層に「SecurityGroup」フォルダを作成し、そのフォルダに一括設定したいグループ名と同じテキストファイルを作成する。
後はテキストファイルの中に追加したいユーザー名(表示名)を1行ずつ入れていく!!
(注)ユーザープリンシパル名でなく、表示名!!
フォルダ階層はこんな感じ↓↓↓


上記例では「TEST管理 グループ.txt」・「TEST管理 グループ2.txt」・「TEST管理 グループ3.txt」を事前に作成している。
中身はこんな感じ↓↓↓
・TEST管理グループ.txt
test 01
test 02
test 03
test 04
test 05
test 06
test 07
test 08
test 09
test 10
管理者
これで準備OK!!
コマンドを実行すると「SecurityGroup」フォルダ配下のファイルを一覧で取得し、それぞれのファイル名(グループ名)を取得。
その後、実際に存在するAzureADのグループと突き合わせて「ObjectId」を取得する。
更にファイルを読み込んでユーザー名(表示名)を取得し、こちらも実際に存在するAzureADユーザーと突き合わせて「ObjectId」を取得する。
後は「Add-AzureADGroupMember」で追加している感じだ。
最後に追加されたか確認するために「Get-AzureADGroupMember」を実行している。
(注)実際に実行する際には一度「Add-AzureADGroupMember」はコメントアウトして、出力確認をみて正しいことを確認することをオススメする
実際に実行した画面がこちら↓↓↓


今回の検証はこれで終了。
次回はメールアドレスを持つグループの追加方法を検証した結果を載せたいと思う。
スポンサードリンク
コメント