こんにちは、石川です。
今回は、WorkSpacesユーザの初期パスワード変更有無をPowerShellで調査する方法を紹介します。
はじめに
WorkSpacesを運用していると、利用者が初期パスワードを変更済みか確認したい場面があります。
ただし、この確認はGUIでは簡単に実施できません。
そのため、PowerShellでActive Directoryの情報を取得して判定する方法が有効です。
第1章:PowerShellで確認する理由
初期パスワード変更有無の確認は、GUIで一覧化して効率よく確認することができず、PowerShellなどを使用する必要があります。
対象ユーザが増えるほど、手作業での確認や結果整理は非効率になります。
そこで、対象ユーザをファイルで指定し、PowerShellで必要な情報を取得・判定する仕組みを用意しておくと、確認作業を効率化できます。
第2章:調査の仕組み
今回の方法では、対象ユーザをCSVまたはTXTで用意し、PowerShellで順番に読み込みます。
その後、Active Directoryから対象ユーザの属性情報を取得し、初期パスワード変更有無を判定します。
もう少し詳しく説明すると、初期パスワード作成日時とパスワード変更日時を比較して、同じ場合はパスワード変更有、異なる場合はパスワード変更無しというロジックを組みました。
結果をCSVに出力しておけば、台帳更新や月次確認にも活用できます。
第3章:実行手順
手順1
調査対象ユーザをCSVファイルに記載します。
CheckUsers.csv
手順2
PowerShellでスクリプトを実行し、調査結果を取得します。
$inputCsv = "$env:USERPROFILE\Documents\対象ユーザ名を記述したファイル.csv"
$outputCsv = "$env:USERPROFILE\Documents\アウトプットファイル.csv"
$users = Import-Csv $inputCsv
$results = foreach ($u in $users) {
$ad = Get-ADUser $u.SamAccountName -Properties PasswordLastSet, whenCreated
$CreatedDate = $ad.whenCreated.ToString("yyyy-MM-dd HH:mm:ss")
$PasswordLastSet = if ($ad.PasswordLastSet) {$ad.PasswordLastSet.ToString("yyyy-MM-dd HH:mm:ss")} else { "" }
[PSCustomObject]@{
SamAccountName = $ad.SamAccountName
CreatedDate = $CreatedDate
PasswordLastSet = $PasswordLastSet
PasswordChangeStatus = if ($CreatedDate -ne $PasswordLastSet){
"Already Changed"
} else {
"Not Changed"
}
}
}
$results | Export-Csv $outputCsv -NoTypeInformation -Encoding UTF8
Write-Host "Completed: $outputCsv"
※実行には、Active Directoryモジュールが利用可能な環境と、対象ユーザ情報を取得できる権限が必要です。
以下が出力されるCSVファイルです
第4章:運用のポイント
この仕組みは、単発確認だけでなく定期運用にも向いています。
たとえば毎月末に確認を実施し、未変更ユーザを抽出して通知する運用にすれば、セキュリティ確認を継続的に行えます。
最後に
以上、WorkSpacesユーザの初期パスワード変更有無をPowerShellで調査する方法を紹介しました。
GUIでは確認しづらい項目でも、PowerShellを使えば対象を明示して効率的に確認できます。
定期的な棚卸や運用確認の仕組みとして、参考になれば幸いです。

