【发布时间】:2021-06-11 06:19:10
【问题描述】:
我目前正在开发一个 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 -Properties * -Filter 'PasswordExpired -eq "TRUE" -and Enabled -eq "TRUE"'。我不会发誓(现在不在 AD 系统上进行测试),但我认为您可以省略-eq "TRUE"的两个实例。 -
嗨,杰夫。我已经尝试过了。 'PasswordExpired' 显然是一种方法(或计算值),因此与过滤属性的工作方式不同(对于 Get-ADUser,例如 'Enabled'。
标签: active-directory windows-server powershell-5.0