我想创建一个所有OU用户的列表,以及他们最后一次修改密码的时间。这是我使用的一个简单的代码。
$OUpath = 'OU=testOU,DC=extranet,DC=domain,DC=com'
$ExportPath = 'D:\TEMP\PassExpired.csv'
Get-ADUser -Filter * -SearchBase $OUpath | Select-object -Property Name,UserPrincipalName,pwdLastSet | Export-Csv -NoType $ExportPath
我不知道为什么前两个属性能正确导出,而后两个属性却没有正确导出 pwdLastSet 抛出一个空列。
我还使用下面这段代码将LargeInteger转换为标准的datetime格式,结果和预期一样。
$PassSet = (Get-ADUser -identity user.name -properties pwdLastSet).pwdLastSet
(Get-Date 1/1/1601).AddDays($PassSet/864000000000)
也许我遗漏了什么?
Artur
Get-ADUser
不会返回所有的属性。你需要通过名称或通配符来指定它们 (get-aduser -filter * -SearchBase $OUpath -Properties *
),对于所有在参数 -Properties
. 还可以考虑使用 PasswordLastSet
而不是pwdLastSet,因为它返回的是日期时间,不需要转换。
get-aduser -filter * -SearchBase $OUpath -Properties PasswordLastSet | Select-object -Property Name,UserPrincipalName,PasswordLastSet | Export-Csv -NoType $ExportPath
P.S.如果你仍然需要使用pwdLastSet,同样的代价也适用于
get-aduser -filter * -SearchBase $OUpath -Properties pwdLastSet| Select-object -Property Name,UserPrincipalName,pwdLastSet| Export-Csv -NoType $ExportPath