GUIでは確認できないWorkSpaces初期パスワード変更有無をPowerShellで調査する

こんにちは、石川です。
今回は、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ファイルです
file

第4章:運用のポイント

この仕組みは、単発確認だけでなく定期運用にも向いています。
たとえば毎月末に確認を実施し、未変更ユーザを抽出して通知する運用にすれば、セキュリティ確認を継続的に行えます。

最後に

以上、WorkSpacesユーザの初期パスワード変更有無をPowerShellで調査する方法を紹介しました。
GUIでは確認しづらい項目でも、PowerShellを使えば対象を明示して効率的に確認できます。
定期的な棚卸や運用確認の仕組みとして、参考になれば幸いです。

Last modified: 2026-03-26

Author