如何仅从Active Directory中检索启用的用户

Cel*_*ppy 3 powershell active-directory

我正在尝试仅检索AD中已启用的用户。当我运行此代码行时,它将返回错误。我也尝试使用过滤器来仅过滤启用用户的请求信息,但它返回每个域中的所有用户,而不仅仅是单个ID。

Get-ADUser : A positional parameter cannot be found that accepts argument 'enabled -eq 'true''.
Run Code Online (Sandbox Code Playgroud)

这是我的代码抛出错误。

Get-ADGroupMember -Identity 'Animal Shop A' | Get-ADUser -Filter '*' | Get-ADUser Where "enabled -eq 'true'" | Get-ADUser -Properties ('Mail')
Run Code Online (Sandbox Code Playgroud)

这将返回每个域的所有用户

Get-ADGroupMember -Identity 'Animal Shop A' | Get-ADUser -Filter "enabled -eq'true'" | Get-ADUser -Properties ('Mail')
Run Code Online (Sandbox Code Playgroud)

我对他们的语法都错了吗?如果我只想返回值,请说“动物商店A”,然后再说“动物商店B”

Ola*_*laf 16

..或者这样更短一点:

Get-ADUser -Filter 'enabled -eq $true' -Properties mail | 
    Select-Object -Property Name,samaccountname,mail
Run Code Online (Sandbox Code Playgroud)

除此之外,我建议使用-SearchBase. 这对 AD 来说压力较小。;-)


tre*_*ode 5

Get-ADUser -Filter * -Properties mail | Where { $_.Enabled -eq $True} | Select Name,samaccountname,mail
Run Code Online (Sandbox Code Playgroud)

这将使目标域中所有已启用的用户都被启用,并显示名称,用户名和邮件属性

  • 请注意,这将向“每个”用户询问 AD,并且只有在所有这些结果都下载到您的计算机后,过滤才会在内存中完成。奥拉夫的回答将确保您只向 AD 询问您需要的内容,从而节省时间和内存。 (2认同)