多要素認証、セルフパスワードリセットに使用する認証方法の登録情報を一括取得する方法について記載する。現在どの程度登録が進んでいるかを確認したい時などに使用してほしい。
検証環境について
動作確認した検証環境は以下の通り。
OS:Microsoft Windows 11 Enterprise
OSbuildバージョン:10.0.22621
PowerShellのバージョン:7.4.0
GraphPowershellのモジュール名とバージョン
Microsoft.Graph.Authentication 2.13.1
Microsoft.Graph.Identity.DirectoryManagement 2.13.1サインインアカウントの権限はグローバル管理者。
使用するコマンド
Get-MgUserAuthenticationEmailMethod
使用例
Get-MgUserAuthenticationEmailMethod -UserId ****@****.onmicrosoft.com取得できる情報例
Id EmailAddress
-- ------------
3ccfcfc8-8683-106f-45cc-3ca9be4aa18f ****@365ps.jpGet-MgUserAuthenticationPhoneMethod
使用例
Get-MgUserAuthenticationPhoneMethod -UserId ****@****.onmicrosoft.com取得できる情報例
Id PhoneNumber PhoneType SmsSignInState
-- ----------- --------- --------------
3079e48a-120b-4351-817c-87b0820088f7 +81 090****1234 mobile notAllowedByPolicyGet-MgUserAuthenticationMicrosoftAuthenticatorMethod
使用例
Get-MgUserAuthenticationMicrosoftAuthenticatorMethod -UserId ****@****.onmicrosoft.com取得できる情報例
Id CreatedDateTime DeviceTag DisplayName PhoneAppVersion
-- --------------- --------- ----------- ---------------
49568f64-78db-39e0-903c-2b140aa18217 SoftwareTokenActivated iPhone 12 mini 6.8.4全てのアカウントの認証情報の招待情報を取得する
各認証情報で使用されるメールアドレスや携帯番号の確認をする場合は、以下スクリプト実行することで詳細情報の確認が可能。
#コマンド実行日時を取得する
$yyyyMMddFFFFF = Get-Date -Format "yyyyMMdd_FFFFF"
#CSVの保存先 windowsOSの場合、デスクトップに保存する
$csvSavePath = "$env:USERPROFILE\Desktop"
#保存するCSVのファイル名
$csvFileName = "allUserAuthenticationInfoList_${yyyyMMddFFFFF}.csv"
#取得した情報を格納する配列を宣言する
$result = @()
#実行数管理の変数
$count = 0
#GraphPowerShellに接続する
Connect-MgGraph `
-Scopes User.Read.All,UserAuthenticationMethod.Read.All `
-NoWelcome
#全てのユーザーを取得する
$allUserList = Get-MgUser -All
#取得したユーザー分繰り返す
foreach($user in $allUserList){
#メールアドレス認証情報を取得する
$emailMethod = Get-MgUserAuthenticationEmailMethod `
-UserId $user.Id
#IDの値がNullでない場合(=認証方法の情報がある場合)結果を格納する
if($emailMethod.id -ne $null){
$result += [PSCustomObject]@{
userId = $user.UserPrincipalName
id = $emailMethod.Id
AuthenticationMethodType = "Email"
AuthenticationMethodInfo = $emailMethod.EmailAddress
}
}
#SMS認証、電話認証の情報を取得する
$phoneMethodList = Get-MgUserAuthenticationPhoneMethod `
-UserId $user.Id
#IDの値がNullでない場合(=認証方法の情報がある場合)結果を格納する
if($phoneMethodList.id -ne $null){
foreach($phoneMethod in $phoneMethodList){
$result += [PSCustomObject]@{
userId = $user.UserPrincipalName
id = $phoneMethod.Id
AuthenticationMethodType = $phoneMethod.PhoneType
AuthenticationMethodInfo = $phoneMethod.PhoneNumber
}
}
}
#MicrosoftAuthenticator認証の情報を取得する
$authenticatorMethod = Get-MgUserAuthenticationMicrosoftAuthenticatorMethod `
-UserId $user.Id
#IDの値がNullでない場合(=認証方法の情報がある場合)結果を格納する
if($authenticatorMethod.id -ne $null){
$result += [PSCustomObject]@{
userId = $user.UserPrincipalName
id = $authenticatorMethod.Id
AuthenticationMethodType = $authenticatorMethod.DeviceTag
AuthenticationMethodInfo = $authenticatorMethod.DisplayName
}
}
$count = $count + 1
$Completed = [Math]::Round(($count / $allUserList.Count) * 100,2)
Write-Progress -Activity "$Completed%完了" -PercentComplete $Completed
}
#取得した情報を並び替えし、CSVファイルとしてエクスポートする
$result | Sort-Object userId,AuthenticationMethodType | `
Export-Csv -Encoding utf8 `
-NoTypeInformation `
-Path "${csvSavePath}\${csvFileName}"
#GraphPowerShellから切断する
Disconnect-MgGraph取得できる情報例
"userId","id","AuthenticationMethodType","AuthenticationMethodInfo"
"****@****.onmicrosoft.com","3ccfcfc8-9383-446f-83cc-3ab9b7c1918f","Email","****@gmail.com"
"****@****.onmicrosoft.com","3989e48a-750b-4051-897c-87b0820828f7","mobile","+81 08012345678"
"****@****.onmicrosoft.com","30fb1c27-b3a6-4ee3-b68b-584f918f4995","SoftwareTokenActivated","iPhone SE (2nd generation)"情報登録の有無のみの簡易的な情報を取得する
認証情報の登録状況のみ確認し携帯番号等の詳細情報が不要な場合は、以下スクリプトを実行することで、簡易的な登録情報を取得することが可能。
#コマンド実行日時を取得する
$yyyyMMddFFFFF = Get-Date -Format "yyyyMMdd_FFFFF"
#CSVの保存先 windowsOSの場合、デスクトップに保存する
$csvSavePath = "$env:USERPROFILE\Desktop"
#保存するCSVのファイル名
$csvFileName = "allUserAuthenticationInfoList_${yyyyMMddFFFFF}.csv"
#GraphPowerShellに接続する
Connect-MgGraph -Scopes AuditLog.Read.All -NoWelcome
#レポート情報を取得する
$report = Get-MgReportAuthenticationMethodUserRegistrationDetail | `
Select-Object UserDisplayName,UserPrincipalName,LastUpdatedDateTime,`
IsAdmin,IsMfaCapable,IsMfaRegistered,IsPasswordlessCapable,`
IsSsprCapable,IsSsprRegistered,IsSystemPreferredAuthenticationMethodEnabled
#取得した情報を並び替えCSVファイルとしてエクスポートする
$report | Sort-Object @{Expression = 'IsAdmin'; Descending = $true },`
@{Expression = 'UserPrincipalName'; Ascending = $true }| `
Export-Csv -Encoding utf8 `
-NoTypeInformation `
-Path "${csvSavePath}\\${csvFileName}"
#GraphPowerShellから切断する
Disconnect-MgGraph取得できる情報例
"UserDisplayName","UserPrincipalName","LastUpdatedDateTime","IsAdmin","IsMfaCapable","IsMfaRegistered","IsPasswordlessCapable","IsSsprCapable","IsSsprRegistered","IsSystemPreferredAuthenticationMethodEnabled"
"User001","User001@****.onmicrosoft.com","2024/02/17 11:44:33","True","False","False","False","True","True","False"
"User002","User002@****.onmicrosoft.com","2024/02/17 11:44:33","True","False","False","False","True","True","False"
"User003","User003@****.onmicrosoft.com","2024/02/17 11:44:33","True","False","False","False","True","True","False"問い合わせフォーム
リンク切れのご報告や、記載内容に不備がありましたら、お手数をおかけしますが
以下お問い合わせフォームからご報告をお願い致します。
コマンドの仕様確認やエラー内容の確認、対処方法については、ご契約されているMicrosoftかCSPへお問い合わせください。
※いただきました内容は確認させていただきますが、必ずしも回答をお約束するものではございません。








