📑
コマンドを使ってMicrosft365のアドレス帳を取得する
これはなに?
Powershellの Get-AzureADUserを使ってMicrosft365のアドレス帳を取得する方法です。
概要
Microsft365のアドレス帳の内容はAzureADの登録ユーザ一覧と同じなので、AzureADのユーザ一覧を取得します。
モジュールのインストール
WindowsパソコンにAzureADをインストールします。
Install-Module -Name AzureAD
コマンド実行
AzureADをインポートしてConnect-AzureAD
コマンドでM365に接続します。
Import-Module AzureAD
Connect-AzureAD
コマンドを実行すると自動的にウェブブラウザが起動して、Windowsログイン中のユーザで認証が行われます。
実際にユーザ一覧を取得してみます。
Get-AzureADUser -All $false
AzureADに登録されているユーザが一覧で表示されたはずです。
フィルターしよう
Get-AzureADUser
を実行すると大量のユーザが表示されます。
最終的にはWhere-Object
を使ってフィルタしますがGet-AzureADUser
の段階である程度フィルタしておくと動作が早いです。
フィルター例
AzureADには一般ユーザだけでなくメーリングリストやゲストユーザ、通知用メールアドレスなど様々なアドレスが登録されています。
今回は一般ユーザかつ指定部署のユーザを抽出したいため下記のフィルターを適用します。
Get-AzureADUser -All $true -Filter "userType eq 'Member' and startswith(department,'部署名')"
フィルタした結果からさらにWhere-Object
でフィルタし、必要な項目をSelect-Object
で抽出します。
Get-AzureADUser -All $true -Filter "userType eq 'Member' and startswith(department,'部署名')" |
Where-Object { $_.jobTitle -notmatch "アラート通知用" } |
Select-Object mail,DisplayName,Department
- jobTitleに "アラート通知用"と入っているアカウントを除外
- mail,DisplayName,Department項目を取得
フィルターに使えるクエリ
Get-AzureADUser
の-Filter
は特定の項目についてのみeq
などでフィルタできます。
どの項目がフィルタできるかは次のURLに掲載されています。
参考URL
フィルターの例
おまけスクリプト
Get-AzureADUser
で取得したアドレス一覧を元にちょっと加工したCSVを出力するサンプルです。
Get-AzureADUser <色々フィルタ> | ForEach-Object {
# DisplayNameにスペース区切りで本名が入っているのでsplitしつつ変数に入れる
$firstName,$lastName,$null,$null = $_.DisplayName -split ' '
# メールアドレスはそのまま
$mail = $_.mail
# 新しいオブジェクトを作成してパイプラインに渡す
[PSCustomObject]@{
firstName = $firstName
lastName = $lastName
email = $mail
}
} | Export-Csv -Path "output.csv" -NoTypeInformation -Encoding UTF8
Discussion