我在cmdlet下面:
get-aduser -filter {Enabled -eq 'true' -and LockedOut -eq 'true'} -Properties samaccountname, givenname, sn, physicalDeliveryOfficeName |
Select-Object -Property samaccountname, givenname, sn, physicalDeliveryOfficeName |
Export-Csv -Encoding Default -path $csvOutputPath -NoTypeInformation
现在,我需要在上面的get-aduser cmdlet中添加一个过滤器以排除锁定的AD用户。...但是我不知道该怎么做。...
我知道我可以使用以下方法获得锁定的用户:
Search-ADAccount -UsersOnly -Locked
有什么想法吗?
答案 0 :(得分:0)
如果要将其保留在一个查询中,则可以针对UserAccountControl属性进行过滤。文档显示锁定的帐户已标记了0x0010(十六进制)或16(十进制基数10)位。因此,您应该能够使用按位AND运算符(带)来确定锁定状态。
get-aduser -filter {Enabled -eq 'true' -and (-not (UserAccountControl -band 16))} -Properties samaccountname, givenname, sn, physicalDeliveryOfficeName |
Select-Object -Property samaccountname, givenname, sn, physicalDeliveryOfficeName |
Export-Csv -Encoding Default -path $csvOutputPath -NoTypeInformation
-not
运算符用于未锁定的帐户。如果要查找锁定的帐户,可以将其删除。
从技术上讲,您可以对整个过滤器使用UserAccountControl
,但是它并不容易理解。这是-band
运算符在此处如何工作的示例:
# Enabled User not locked has useraccountcontrol = 512 [bool](512 -band 16) False # Enabled User locked has useraccountcontrol = 528 PS C:\temp\test1> [bool](528 -band 16) True # Locked Enabled User with expired password [bool](8389136 -band 16) True
有关用于确定UserAccountControl值的位的更多信息,请参见UserAccountControl Flags。
有关按位运算符的更多信息,请参见About_Arithmetic_Operators。