My goal is to create a single object in powershell that shows the AD display name and password expiration date for all non-disabled users.
This is relatively easy. However, the date is retrieved in an unreadable format so I convert the date.
Creating the two variables that contain the data I want is working.
The problem is when I try to combine those two variables I get a single object with two headers as expected but the two columns below are empty.
I’m using PowerShell V2 on Win 7 Pro SP1
Any ideas what the issue could be?
# Get users DisplayName and password expiration time from AD
$msdsComputed = Get-ADUser -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} -Properties "DisplayName", "msDS-UserPasswordExpiryTimeComputed" |
Where-Object {$_.DisplayName -ne $null}
# Convert date to human readable format
$ExpiryDate = $msdsComputed | Foreach-Object {
([datetime]::FromFileTime(($_)."msDS-UserPasswordExpiryTimeComputed"))
} | Select-Object "DateTime"
$combined = @{
DisplayName = $msdsComputed.DisplayName
ExpiryDate = $ExpiryDate.DateTime
}
New-Object PSObject -Property $combined | ConvertTo-Csv -NoTypeInformation
Here’s a revised version of your script without looping issues: