Some Active Directory attributes return an 8 byte integer in the form of an IADsLargeInteger interface. An example is the pwdLastSet attribute from a user object.
Because the IADsLargeInteger object doesn’t provide type information PowerShell cannot read the HighPart and LowPart properties.
So I wrote the function below to get the Int64 value of an IADsLargeInteger:
powershell
Download
function AdsLargeIntegerToIn64($adsLargeInteger)
{
[Int32]$highPart = $adsLargeInteger.GetType().InvokeMember("HighPart", [System.Reflection.BindingFlags]::GetProperty, $null, $adsLargeInteger, $null)
[Int32]$lowPart = $adsLargeInteger.GetType().InvokeMember("LowPart", [System.Reflection.BindingFlags]::GetProperty, $null, $adsLargeInteger, $null)
return [Int64]("0x{0:x8}{1:x8}" -f $highPart, $lowpart)
}
[...] out the maxPwdAge attribute is a trivial task in PowerShell (I am re-using the function AdsLargeIntegerToInt64):# Read Maximum Password Age (from Domain Policy) # Read maxPwdAge attribute and convert to Int64 [...]