gpt4 book ai didi

powershell - 特定OU中用户的Get-ADUser密码到期

转载 作者:行者123 更新时间:2023-12-02 23:39:13 27 4
gpt4 key购买 nike

我可以为单个用户获取有效的“msDS-UserPasswordExpiryTimeComputed”属性:

(([DateTime]::FromFileTime((Get-ADUser $UserName -Properties "msDS-UserPasswordExpiryTimeComputed")."msDS-UserPasswordExpiryTimeComputed")))

但是我在定位一组特定用户时遇到了麻烦。我的较大脚本旨在从特定OU中的帐户中提取各种AD用户属性,并将其导出到csv。除“PasswordExpiry”对象外,所有属性均按预期填充。

下面的示例为每个用户返回假的“PasswordExpiry”日期“12/31/1600”。
“C:\ UserList.txt”每行包含一个sAMAccountNames。
$UserList=Get-Content "C:\UserList.txt"
ForEach ($UserName in $UserList) {Get-ADUser "$UserName" -Properties * |
Select-Object sAMAccountName,whenCreated, `
@{Name="lastLogon";Expression={[DateTime]::FromFileTime($_.lastLogon)}}, `
@{Name="pwdLastSet";Expression={[DateTime]::FromFileTime($_.pwdLastSet)}}, `
@{Name="PasswordExpiry";Expression={[DateTime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}, `
cannotChangePassword,passwordNeverExpires, `
@{Name="GroupMember";Expression={($_ | Select -ExpandProperty MemberOf) | Where {$_ -Like "*Desired.Group*"}}} |
Export-Csv -Path "C:\UserInfo.csv" -Append -NoTypeInformation}

如果我想查询所有AD用户,这将起作用:
Get-ADUser -Filter * –Properties sAMAccountName,"msDS-UserPasswordExpiryTimeComputed" |
Select-Object -Property sAMAccountName,@{Name="PasswordExpiry";Expression={[DateTime]::FromFileTime($_.“msDS-UserPasswordExpiryTimeComputed”)}}

但是,如果我将[-SearchBase“OU = Users,DC = Domain,DC = local”]参数添加到Get-ADUser,则会得到“PasswordExpiry”的空输出。我想我可以尝试通过一些后期处理来解析整个输出。似乎比我应有的更多。

我知道我可以根据“pwdLastSet”属性来计算到期时间。但我想拉实际值,因为年龄政策可能未知。任何帮助表示赞赏。

最佳答案

我必须定义除“*”之外的属性,以使其起作用。在这种情况下,仅星号显然是不够的。

Get-ADUser -Identity "$UserName" -Properties *,"msDS-UserPasswordExpiryTimeComputed"

我认为第二个示例仅在没有-SearchBase的情况下才能正常运行。正如Bacon Bits强调的那样,我只查询一小部分将过期时间设置为“从不”的用户。因此,null是有效的输出。

这不是原始脚本的问题。无论如何,它返回“12/31/1600”。如上所述,我必须添加其他属性才能获得正确的值。这些现在很好。
$UserList=Get-Content "C:\UserList.txt"
ForEach ($UserName in $UserList) {Get-ADUser "$UserName" -Properties *,"msDS-UserPasswordExpiryTimeComputed" |
Select-Object sAMAccountName,whenCreated, `
@{Name="lastLogon";Expression={[DateTime]::FromFileTime($_.lastLogon)}}, `
@{Name="pwdLastSet";Expression={[DateTime]::FromFileTime($_.pwdLastSet)}}, `
@{Name="PasswordExpiry";Expression={[DateTime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}, `
cannotChangePassword,passwordNeverExpires, `
@{Name="GroupMember";Expression={($_ | Select -ExpandProperty MemberOf) | Where {$_ -Like "*Desired.Group*"}}} |
Export-Csv -Path "C:\UserInfo.csv" -Append -NoTypeInformation}
Get-ADUser -Filter * -SearchBase "OU=Users,DC=Domain,DC=local" –Properties sAMAccountName,"msDS-UserPasswordExpiryTimeComputed" |
Select-Object -Property sAMAccountName,@{Name="PasswordExpiry";Expression={[DateTime]::FromFileTime($_.“msDS-UserPasswordExpiryTimeComputed”)}}

编辑:现在按照培根钻头建议进行此操作:
$ListOfOUs="OU=Users01,DC=Domain,DC=local","OU=Users02,DC=Domain,DC=local","OU=Users03,DC=Domain,DC=local"
$ListOfOUs | ForEach {Get-ADUser -Filter * -SearchBase $_ -Properties sAMAccountName,whenCreated,lastLogon, `
pwdLastSet,"msDS-UserPasswordExpiryTimeComputed",cannotChangePassword,passwordNeverExpires,MemberOf |
Select-Object sAMAccountName,whenCreated, `
@{Name="lastLogon";Expression={[DateTime]::FromFileTime($_.lastLogon)}}, `
@{Name="pwdLastSet";Expression={[DateTime]::FromFileTime($_.pwdLastSet)}}, `
@{Name="PasswordExpiry";Expression={[DateTime]::FromFileTime($_."msDS-UserPasswordExpiryTimeComputed")}}, `
cannotChangePassword,passwordNeverExpires, `
@{Name="GroupMember";Expression={($_ | Select -ExpandProperty MemberOf) | Where {$_ -Like "*Desired.Group*"}}} |
Export-Csv -Path "C:\UserInfo.csv" -Append -NoTypeInformation}

关于powershell - 特定OU中用户的Get-ADUser密码到期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46995282/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com