前回「[Microsoft 365]多要素認証(二要素認証)でSMSを使用する際の電話番号をPowershellコマンドで一括登録する方法を検証してみた 〜New-MgUserAuthenticationPhoneMethod〜」
の続きの検証となります。
今回はユーザー毎の多要素認証の有効化を一括で設定する検証となります。
<検証環境>
クライアントOS:Windows 10 Pro 21H1
手順としては以下のサイトを参考にしました。
ユーザーごとの Azure AD Multi-Factor Authentication を有効にしてサインイン イベントのセキュリティを確保する
まずは使用するコマンドについて確認していきます。
Powershellによる365への接続
多要素認証(MFA)有効化設定



正常にコマンドが完了した場合は特に何も返ってこないようですね。
ここで確認コマンドを試してみると・・・・

う〜〜ん、単純に「StrongAuthenticationRequirements」と指定しただけではオブジェクト情報しか表示出来ませんね。
こんな時は面倒ですが、オブジェクトの中身を更に指定しないとダメですね(^_^;)
一例としてはこんな感じになるかと思います。

無効の場合には「空欄」、有効の場合には「Enabled」、強制の場合には「Enforced」という値を返すようですね!
※それぞれの違いについては、冒頭に紹介したサイトに記載があります。
ではコマンドがわかったので、実際にスクリプトを作成していきます。
↓↓作成したスクリプトと準備するCSVファイルはこんな感じになりました↓↓
※このファイル自体は前回の検証で使用したものと同じにしてます。
SMS認証の作成をしたら、そのまま有効化もするというのが通常の流れかと思うので。
<CSVファイルの例>

(注)「Import-CSV」コマンド時に文字コードを「Shift-JIS」で指定してますので、エクセルで作成・編集したものを使用可能です。ただし、日本語が入っていなければ「UTF-8」でも問題ないような気がします。
<実際に実行した画面>

作成したスクリプトとCSVファイルを同一フォルダ内に配置して、Powershellとして実行します。


実行完了後は同じフォルダに設定確認用ログが出力されます。
<出力された確認ログ(StrongAuthenticationState.log)>

一括での有効化が確認出来たので、今回の検証もこんなところで終わりたいと思いますっ( ´ー`)フゥー...
の続きの検証となります。
今回はユーザー毎の多要素認証の有効化を一括で設定する検証となります。
<検証環境>
クライアントOS:Windows 10 Pro 21H1
手順としては以下のサイトを参考にしました。
ユーザーごとの Azure AD Multi-Factor Authentication を有効にしてサインイン イベントのセキュリティを確保する
検証
前回の検証時に多要素認証の有効化をGUI(Microsoft 365管理センター)から設定する手順は簡単に紹介していますので、ここでは割愛します。まずは使用するコマンドについて確認していきます。
モジュールのインストール
> Install-Module MSOnline
> Install-Module MSOnline
Powershellによる365への接続
> Connect-MsolService
多要素認証(MFA)有効化設定
> $st = New-Object -TypeName Microsoft.Online.Administration.StrongAuthenticationRequirement
> $st.RelyingParty = "*"
> $st.State = "Enabled"
> $sta = @($st)
> Set-MsolUser -UserPrincipalName <ユーザープリンシパル名> -StrongAuthenticationRequirements $sta
確認コマンド
> $AllUser = Get-MsolUser
> $AllUser | Select-Object UserPrincipalName,DisplayName,@{Label="StrongAuthenticationRequirementsState";Expression={($_.StrongAuthenticationRequirements | ForEach-Object{$_.State})}} | Sort-Object StrongAuthenticationRequirementsState
確認コマンド
> $AllUser = Get-MsolUser
> $AllUser | Select-Object UserPrincipalName,DisplayName,@{Label="StrongAuthenticationRequirementsState";Expression={($_.StrongAuthenticationRequirements | ForEach-Object{$_.State})}} | Sort-Object StrongAuthenticationRequirementsState
(注)確認コマンドが長くなっていますが、合計2行です。
↓↓実際に使用してみた感じ↓↓
↓↓実際に使用してみた感じ↓↓




正常にコマンドが完了した場合は特に何も返ってこないようですね。
ここで確認コマンドを試してみると・・・・

う〜〜ん、単純に「StrongAuthenticationRequirements」と指定しただけではオブジェクト情報しか表示出来ませんね。
こんな時は面倒ですが、オブジェクトの中身を更に指定しないとダメですね(^_^;)
一例としてはこんな感じになるかと思います。

無効の場合には「空欄」、有効の場合には「Enabled」、強制の場合には「Enforced」という値を返すようですね!
※それぞれの違いについては、冒頭に紹介したサイトに記載があります。
ではコマンドがわかったので、実際にスクリプトを作成していきます。
↓↓作成したスクリプトと準備するCSVファイルはこんな感じになりました↓↓
Enable-StrongAuthenticationState.ps1
#環境変数の設定
$CurrentFolder = Split-Path $MyInvocation.MyCommand.Path -Parent
$CSVFilePath = $CurrentFolder + "\AuthenticationPhoneInfo.csv"
$OutputLogFilePath = $CurrentFolder + "\StrongAuthenticationState.log"
$CSVファイルの読み込み
$AllUserInfo = Import-Csv -Path $CSVFilePath -Encoding Default
#Powershellで接続
Connect-MsolService
#「有効化」するためのオブジェクト作成
$st = New-Object -TypeName Microsoft.Online.Administration.StrongAuthenticationRequirement
$st.RelyingParty = "*"
$st.State = "Enabled"
$sta = @($st)
#一括設定
foreach($UserInfo in $AllUserInfo){
$UserName = $UserInfo.UserPrincipalName
Write-Host "${UserName}にて多要素認証を有効化します. `r`n" -ForegroundColor Yellow
Set-MsolUser -UserPrincipalName $UserName -StrongAuthenticationRequirements $sta
}
#設定後の全ユーザーの状態を確認
$AllUser = Get-MsolUser
$OutputUserInfo = $AllUser | Select-Object UserPrincipalName,DisplayName,@{Label="StrongAuthenticationRequirementsState";Expression={($_.StrongAuthenticationRequirements | ForEach-Object{$_.State})}} | Sort-Object StrongAuthenticationRequirementsState
$OutputUserInfo | Export-Csv -Path $OutputLogFilePath -Encoding UTF8 -NoTypeInformation
Write-Host "処理が完了しました.`r`n" -ForegroundColor Green
pause
AuthenticationPhoneInfo.csv
UserPrincipalName,PhoneNumber
testuser01@~,+81 09012345678
test01@~,+81 09098765432
test100@~,+81 08011119999
test101@~,+81 08022228888
SMS認証の作成をしたら、そのまま有効化もするというのが通常の流れかと思うので。
<CSVファイルの例>

(注)「Import-CSV」コマンド時に文字コードを「Shift-JIS」で指定してますので、エクセルで作成・編集したものを使用可能です。ただし、日本語が入っていなければ「UTF-8」でも問題ないような気がします。
<実際に実行した画面>

作成したスクリプトとCSVファイルを同一フォルダ内に配置して、Powershellとして実行します。


実行完了後は同じフォルダに設定確認用ログが出力されます。
<出力された確認ログ(StrongAuthenticationState.log)>

一括での有効化が確認出来たので、今回の検証もこんなところで終わりたいと思いますっ( ´ー`)フゥー...
スポンサードリンク
コメント