PowerShell - password expiration period for all users without disabilities in AD

My goal is to create a single object in PowerShell that displays the AD display name and password expiration date for all non-disconnected users. It is relatively easy. However, the date is extracted in an unreadable format, so I am converting the date.

Creating two variables containing the data I want works. The problem is that when I try to combine these two variables, I get one object with two headers, as expected, but the two columns below are empty.

I am using PowerShell V2 on Win 7 Pro SP1

Any ideas what could be the problem?

# 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 
+4
source share
1 answer

Here's the version of the script without looping issues:

 $reportObject = @() $userList = Get-ADUser -filter {Enabled -eq $True -and PasswordNeverExpires -eq $False} -Properties "DisplayName", "msDS-UserPasswordExpiryTimeComputed" | Where-Object {$_.DisplayName -ne $null} $userList | %{ $output = "" | Select DisplayName, ExpiryDate $output.DisplayName = $_.DisplayName $output.ExpiryDate = ([datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")).DateTime $reportObject += $output #Next 2 Lines provide debugging... I'm not sure the date time portion will work without having AD to play with $output | fl * ([datetime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")).DateTime } $reportObject | Convertto-CSV -NoTypeInformation 
+9
source

All Articles