書けたら書く

主にCorporate ITについて書けたら書く

Azure ADの特定のセキュリティグループに含まれるユーザー一覧をPowerShellで取得する

Windows 10を利用していることを前提に記載します。

まずはじめに、PowerShellを「管理者として実行する」で起動します。
次に、必要なモジュールをインストールします。

Install-Module -Name AzureAD

モジュールのインストールは一度行えばOKです。

ここまでの準備ができたら、以下を記載した.ps1ファイルを実行します。問題なく実行されると、対象のセキュリティグループに含まれるユーザー一覧(csv)がデスクトップに生成されます。

$Credential = Get-Credential
Connect-AzureAD -Credential $Credential

$groupname = Read-Host "セキュリティグループ名を入力してください"
$group = Get-AzureADGroup -Filter "DisplayName eq '$groupname'"
$userlist = Get-AzureADGroupMember -ALL 1 -ObjectId $group.ObjectId
$userlist | Select-Object -Property UserPrincipalName,Mail,DisplayName | Export-Csv -Encoding UTF8 -Path $HOME\Desktop\userlist_$groupname.csv

いくつかポイントを記載しておきます。

$Credential = Get-Credential
Connect-AzureAD -Credential $Credential

この部分を実行すると、サインイン画面が起動しますので、Office 365職場または学校のアカウント の資格情報を入力します。

$groupname = Read-Host "セキュリティグループ名を入力してください"

今回はユーザーがセキュリティグループ名を入力する形にしました。なお、セキュリティグループ名の入力に大文字小文字の区別はありません。

$userlist = Get-AzureADGroupMember -ALL 1 -ObjectId $group.ObjectId

デフォルトでは最大100件までの情報しか取得できません。
-ALL 1 を追加することで全件取得できます。なお、1true に置き換えても構いません。

Export-Csv -Encoding UTF8 -Path $HOME\Desktop\userlist_$groupname.csv

私が使用するエディターがVS Codeなので、UTF-8エンコードしています。SJISでexportする場合は default と置き換えてください。