Get-ADUser无法正常运行

时间:2015-06-25 08:59:01

标签: scripting active-directory output powershell-v2.0

我创建了一个脚本,列出了OU中不属于某个组的所有用户。这会将结果保存到文本文件中。我认为这工作正常,直到我从文本文件中获取用户名并在Active Directory中搜索它。原来用户是我试图过滤掉的组的成员。这是代码 -

Get-ADUser  -SearchBase "OU=Users 2004,OU=Cyngor,DC=gwynedd,DC=rhwydwaith"  -Filter {( memberof -ne "CN=CTX AppSense,OU=Rheoli,OU=Grwpiau,OU=TC Enviroment,DC=gwynedd,DC=rhwydwaith")}  -Properties Name | select Name  | Export-CSV "C:\Users.txt"

我无法弄清楚为什么这不能正常工作。有什么建议吗?

感谢。

1 个答案:

答案 0 :(得分:1)

memberOf是一个多值属性,即可分辨名称列表。使用-notcontains运算符检查是否包含特定的可分辨名称:

$ou = 'OU=Users 2004,OU=Cyngor,DC=gwynedd,DC=rhwydwaith'
$dn = 'CN=CTX AppSense,OU=Rheoli,OU=Grwpiau,OU=TC Enviroment,DC=gwynedd,DC=rhwydwaith'

Get-ADUser -Filter * -SearchBase $ou -Properties Name, MemberOf |
  ? { $_.MemberOf -notcontains $dn } |
  select Name  |
  Export-Csv 'C:\Users.txt' -NoType

请注意,memberOf属性中未列出用户的主要群组。如果代码还应该处理主要组,则需要添加一个检查:

$ou = 'OU=Users 2004,OU=Cyngor,DC=gwynedd,DC=rhwydwaith'
$dn = 'CN=CTX AppSense,OU=Rheoli,OU=Grwpiau,OU=TC Enviroment,DC=gwynedd,DC=rhwydwaith'

Get-ADUser -Filter * -SearchBase $ou -Properties Name, MemberOf |
  ? { $_.MemberOf -notcontains $dn -and $_.PrimaryGroup -ne $dn } |
  select Name  |
  Export-Csv 'C:\Users.txt' -NoType