職場で約1800のADアカウントのパスワードがパスワード一覧と合っているか?をチェックする為に
PowerShellスクリプトをChatGPTと共に作成しました。
パスワード一覧ファイル
aduser_check_input.csv
ADUserID,Password
User1,password1
User2,password2
User3,password3
Powershellスクリプト
ADUser_Check.ps1
# 管理者権限の接続情報
$AdminUserID = 'Domain\adminuser'
$AdminPW = "password"
$ADServer = "101.101.200.100"
# CSVファイルのパスを設定
$inputCsvPath = "C:\Work_AD2\aduser_check_input.csv"
$outputCsvPath = "C:\Work_AD2\aduser_check_output.csv"
# 管理者権限の資格情報を作成
$AdminSecurePassword = ConvertTo-SecureString -String $AdminPW -AsPlainText -Force
$AdminCredential = New-Object System.Management.Automation.PSCredential($AdminUserID, $AdminSecurePassword)
# CSVファイルを読み込む
$users = Import-Csv -Path $inputCsvPath
# 結果を格納する配列
$results = @()
function Test-UserCredentials {
param (
[string]$ADUserID,
[string]$Password,
[string]$ADServer
)
$securePassword = ConvertTo-SecureString $Password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($ADUserID, $securePassword)
try {
$ldapConnection = New-Object System.DirectoryServices.DirectoryEntry("LDAP://$ADServer", $ADUserID, $Password)
if ($ldapConnection.Properties["distinguishedName"].Count -gt 0) {
return $true
}
} catch {
return $false
}
return $false
}
foreach ($user in $users) {
$ADUserID = $user.ADUserID
$Password = $user.Password
# パスワードが正しいかどうかを確認
$authResult = Test-UserCredentials -ADUserID $ADUserID -Password $Password -ADServer $ADServer
# 結果を配列に追加
$results += [pscustomobject]@{
ADUserID = $ADUserID
AuthResult = $authResult
}
}
# 結果をCSVファイルにエクスポート
$results | Export-Csv -Path $outputCsvPath -NoTypeInformation
Write-Output "認証結果を $outputCsvPath にエクスポートしました。"
3.まとめ
1800という大量のアカウント数のパスワードが台帳と一致しているか?を無事に確認することが出来ました。
ちなみに処理時間は30分程度でした。