active-directory - Get-ADUser - 搜索过期帐户。在命令中使用变量
问题描述
我目前正在开发一个 Powershell GUI 脚本,以帮助我的团队更轻松地找到密码过期、禁用帐户等的帐户,并将这些帐户输出到 CSV。它几乎完全围绕“ Get-ADUser ”命令。到目前为止,几乎一切都奏效了,除了找到密码过期的帐户。
我已经对此进行了很多研究,但似乎没有使用 Get-ADUser 查找过期帐户的简单方法。我知道我可以改用Search-ADAccount,但这样做会很尴尬(因为我需要重新编写很多代码)。
Get-Aduser -Properties * -Filter {PasswordExpired -eq $true}
只是画了一个空白。
例如,
Get-ADUser -Properties * -Filter * | ? {$_.PasswordExpired -eq $True -and $_.Enabled -eq $true} | Select-Object name, enabled | Export-Csv "C:\report.csv" -NoTypeInformation
工作得很好,但如果我尝试分配命令的“中间”,即
{$_.PasswordExpired -eq $True -and $_.Enabled -eq $true}
到一个变量,然后将其替换为命令,我要么得到一个错误,要么是我的 AD 中所有那些的列表,要么根本没有人。替换变量的理由是允许可能的帐户状态(用户可以通过选择单选按钮来选择)。
我已经尝试过双引号和单引号的各种排列,包括和不包括大括号等,但 Powershell 不会让我休息!
谢谢!
解决方案
该Get-ADUser
cmdlet 公开了PasswordExpired
扩展属性,该属性是一个布尔值,指示密码是否已过期。它基于msDS-User-Account-Control-Computed
属性。但是,您不能使用此属性进行过滤。
这意味着您可以检查该属性上的 UF_PASSWORD_EXPIRED 位:
Get-ADUser -Filter "Enabled -eq 'True'" -Properties 'msDS-User-Account-Control-Computed' |
Where-Object {($_.'msDS-User-Account-Control-Computed' -band 0x800000) -eq 0x800000} | # UF_PASSWORD_EXPIRED --> 0x800000 = 8388608
Select-Object Name, Enabled | Export-Csv "C:\report.csv" -NoTypeInformation
PasswordNeverExpires
您可以通过扩展过滤器以排除同时PasswordNotRequired
使用 $false的用户来加速上述操作:
$filter = "Enabled -eq 'True' -and PasswordNeverExpires -eq 'False' -and PasswordNotRequired -eq 'False'"
Get-ADUser -Filter $filter -Properties PasswordNeverExpires, PasswordNotRequired, 'msDS-User-Account-Control-Computed' |
Where-Object {($_.'msDS-User-Account-Control-Computed' -band 0x800000) -eq 0x800000} | # UF_PASSWORD_EXPIRED --> 0x800000 = 8388608
Select-Object Name, Enabled | Export-Csv "C:\report.csv" -NoTypeInformation
推荐阅读
- ios - 具有相同凭据的多个子域的 iOS 密码自动填充
- java - Apache XMLSchema 核心 XSD/XML 解析器将根元素显示为所有子元素的父元素,而不是其直接父元素
- flutter - 无法取消 UPI 付款 Razorpay Flutter
- javascript - 知道何时添加或删除自定义事件?
- html - 无法发送包含指向多个页面的导航栏的可查看 html 文件
- spring - Spring Boot REST 端点返回接口(使用 Jackson 序列化多态类型)
- css - 添加后我的 CSS 背景图像未显示
- java - System.exit(0) 导致缓存或内存问题?
- javascript - 如何在满足特定标准的情况下随机化一个数组?
- sass - 循环时 SASS 映射值不同