使用过滤器从活动目录中获取所有用户

Get all users from active directory using filter

我正在尝试使用以下脚本从 AD 获取所有活跃用户,但是,尽管我知道有值为 512 的数据,但我没有得到任何结果。

你知道我这里有什么问题吗?

  Get-ADUser -filter {$userAccountControl -eq "512"} -properties Name,userAccountControl -Server myserver.local | Export-CSV "E:\Folder\ADusers.csv" -NoTypeInformation -Encoding UTF8

你可以试试 LDAPfilter 语法

Get-ADUser -property userAccountControl -LDAPfilter "(userAccountControl=512)"

然而,这可能不是一个好方法:userAccountControl 是一个二进制字段,每个位代表一个二进制值(参见 https://support.microsoft.com/en-us/help/305144/how-to-use-the-useraccountcontrol-flags-to-manipulate-user-account-pro) 例如:

512 是 "normal account",你想要什么

66048 是 "normal account" + "password dont expire",您可能还需要

514 是 "normal account" + "account disabled" ,你可能不想要

所有值都匹配

-band 512

你需要弄清楚什么是活跃用户。

正如评论中指出的,$ 不属于。这告诉 PowerShell 您想要使用名为 $userAccountControl 的变量中的值并将其与 512 进行比较。考虑到您可能从未设置名为 $userAccountControl 的变量,这意味着它没有与 512 进行比较,并且发现并非每个帐户都如此。

删除 $,它将比较名为 userAccountControl 的 属性 与 512

Get-ADUser -filter {userAccountControl -eq "512"} -properties Name,userAccountControl -Server myserver.local | Export-CSV "E:\Folder\ADusers.csv" -NoTypeInformation -Encoding UTF8