【发布时间】:2015-11-19 11:47:14
【问题描述】:
我正在尝试在 AD 中检查我们的用户,看看他们是否属于某个组,以及是否没有将他们添加到该组中。
我的脚本似乎不起作用。
*Import-Module ActiveDirectory
$Grpex26Month = "EX-Retention 26 Months"
$Grpex13Month = "EX-Retention 13 Months"
Function Check-IsGroupMember{
Param($user,$grp)
$strFilter = "(&(objectClass=Group)(name=" + $grp +"))"
$objDomain = New-Object System.DirectoryServices.DirectoryEntry
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = "Subtree"
$colResults = $objSearcher.FindOne()
$objItem = $colResults.Properties
([string]$objItem.member).contains($user)
}
$userList = get-aduser -f {surname -like 'm*'}
Foreach ($user in $userList) {
$Check = Check-IsGroupMember $user $grpex13month
If ($Check -eq 'False') {
Add-adgroupmember $grpex13month $user
write-host $user.Name
}
}*
现在这是我修改的脚本,之前从一个组中删除并添加到另一个组,但我认为上面的更改仍然可以。我目前也只搜索“M”,因为我知道本节中有一个用户需要这个。
甚至找不到此用户...这是我为所有用户获得的响应示例,除了在首次编写此脚本后设置的新用户。
MLastName, FirstName
Add-adgroupmember : The specified account name is already a member of the group
At \\ServerName\DataUsers$\DKendall\Scripts\Exchange groupremoval.ps1:31 char:1
+ Add-adgroupmember $grpex13month $user
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (EX-Retention 13 Months:ADGroup)[Add-ADGroupMember], ADException
+ FullyQualifiedErrorId : ActiveDirectoryServer:1378,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember
【问题讨论】:
-
Why does '$true -eq "string"' returns $true? 的可能重复项。看看那个和它的副本。答案是
If ($Check -eq $False)。还应该看看 dups 欺骗中涵盖的左侧操作数。 -
$Check是一个布尔值,所以 'False' 被转换为一个布尔值。所有非零长度字符串都返回 true。 -
我对这个问题有点困惑:您是否要将 AD 中的所有用户添加到一个组中?
标签: powershell active-directory addition active-directory-group