from the blurb.
The PasswordLastSet PowerShell property is based on the pwdLastSet AD attribute.
The pwdLastSet attribute is a LargeInteger where dates are represented as the number of ticks (100-nanosecond intervals) since 12:00 am January 1, 1601. The PasswordLastSet property converts the LargeInteger into a datetime in the curren time zone.
If the password has never been set, then pwdLastSet is 0 and PasswordLastSet is missing. If you check "User must change password at next logon" in ADUC, the system assigns 0 to pwdLastSet, and again PasswordLastSet will be missing.
If you have users with a recent value for LastLogonDate, but a missing PasswordLastSet, then that means the user must change their password at their next logon and pwdLastSet is 0.
My initial thought when reading this was whether this attribute is replicated or not.
I found the following, which I haven't verified but could be part of the issue.
Now, keep in mind that PasswordLastSet is a replicated field, but it replicates on an extremely slow schedule. What this means is the value could be as old as 11 days! In a smaller environment it's pretty up to date, but the more domain controllers you have the closer to that worst case scenario you get (11 day old data)
This may means that you need code to check each domain server and return the highest\latest value.
Based on this. Can you check the pwdLastSet for the accounts where PasswordLastSet is blank? Is it actually set to 0?
You can add this attribute to your Get-ADUser query to check. You could also check each domain controller by using -server in the command just see if they are different.