我有以下的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用户.但我不知道怎么做.
我知道我可以通过以下方式获得被锁定的用户:
搜索-ADAccount -UsersOnly -Locked
有什么想法吗?
发布于 2019-05-07 16:43:47
如果希望将其保留在一个查询中,则可以针对UserAccountControl属性进行筛选。文档显示,被锁定的帐户具有0x0010 (十六进制)或16 (十进制基数10)的标记位。因此,您应该能够使用按位和运算符(-band)来确定锁定状态。
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
操作符如何在这里工作的示例:
未锁定的启用用户拥有用户帐户控件= 512 布尔值假#启用用户已锁定用户帐户控件= 528 PS C:\temp\test1> 布尔值 True #锁定已过期密码的启用用户布尔值 True
有关用于确定UserAccountControl旗值的位的更多信息,请参见UserAccountControl。
有关按位运算符的更多信息,请参见运算符。
https://stackoverflow.com/questions/56026131
复制相似问题