【发布时间】:2018-10-03 08:17:00
【问题描述】:
如果电子邮件属性包含“abc.com”或“def.com”并且组中的现有用户将跳过该过程,我创建了一个 PS 脚本来将 ADusers 添加到组中。下面是我的脚本
import-module ActiveDirectory
$Users = Get-ADUser -Filter * -Properties emailaddress
$existingUsers = Get-ADgroupmember "Test_group"
foreach ($user in $Users) {
#if user existing in the group, Skip this process
if (($existingUsers | Where-Object { $_.sAMAccountName -eq $user.sAMAccountName }) -eq $null) {
#if user email attribute contain "abc.com" or "def.com"
if ($user.emailaddress -match "abc.com" -or $user.emailaddress -match "def.com") {
$GroupMembers = Get-ADGroupMember -Identity "test_group" | Select -ExpandProperty SamAccountName
if ($User.SamAccountName -NotContains $GroupMembers) {
Add-ADGroupMember -Identity "test_group" -Members $User
}
}
}
}
但是,执行后,有如下2个返回错误。
我在 ADWS 配置中添加了 "add key="MaxGroupOrMemberEntries" value="200000",但问题仍然存在。
Get-ADGroupMember:无法联系服务器。这可能是因为 此服务器不存在、当前已关闭或没有 Active Directory Web 服务正在运行。在 C:\scripts\AutoAddUserToGroup.ps1:15 字符:50 + $GroupMembers = 获取-ADGroupMember
Add-ADGroupMember : 指定的账户名已经是 C:\scripts\AutoAddUserToGroup.ps1:18 char:34 处的组 + 添加-ADGroupMember
【问题讨论】:
-
这段代码根本没有效率,使用 Get-ADUser 和适当的过滤器,这就是你所需要的,几分钟后会发布一个示例。
标签: powershell active-directory