PowerShellで現在参加しているドメインの各メンバーのパスワード期限を取得する。
下記記事で環境構築しておきながら全部どっとねっとで済ましてしまった。
SamAccountNameと残り日数CSV出力にしてなんやかんやする予定。
ソースコード
Add-Type -AssemblyName System.DirectoryServices Add-Type -AssemblyName System.DirectoryServices.AccountManagement $context = New-Object System.DirectoryServices.AccountManagement.PrincipalContext( [System.DirectoryServices.AccountManagement.ContextType]::Domain, [System.Environment]::UserDomainName) $up = New-Object System.DirectoryServices.AccountManagement.UserPrincipal($context) $searcher = New-Object System.DirectoryServices.AccountManagement.PrincipalSearcher($up) $allUsers = $searcher.FindAll() foreach($user in $allUsers){ # 有効なアカウントのみ if($user.Enabled) { $deUser = [System.DirectoryServices.DirectoryEntry]$user.GetUnderlyingObject() $expDate = ([System.DateTime]$deUser.PasswordExpirationDate) # 今から期限までの期間を取得 $ts = New-TimeSpan (Get-Date) $expDate # とりあえず前後10日の期間で計算する。 if ( $ts.Days -lt 10 -and $ts.Days -igt -10 ){ Write-Output ([string]::Join(",", @( $user.SamAccountName, $ts.Days))) } } }