Add-ADGroupMember无法找到具有标识的对象

时间:2014-11-03 16:52:18

标签: powershell

我正在使用PowerShell脚本将大量用户导入AD。

其中一项是根据用户的程序编号将用户添加到AD安全组。大多数情况下,这是有效的,除非我拼错一些东西,或其他简单的人为错误。但是,我们必须添加2个安全组,虽然Add-ADGroupMember完全适用于其中一个,但它无法找到另一个组。这是我使用的脚本:

$Users = Import-Csv "C:\PSScripts\Create\users.csv"  
foreach ($User in $Users) 
{  
    $AccountName = $User.firstname + "." + $User.lastname
    $Program = $User.Program
    $HomeDrive = 'H:'
    $UserRoot = '\\twgeneral\homedrive\'
    $HomeDirectory = $UserRoot+$AccountName
    Set-ADUser $AccountName -HomeDrive $HomeDrive -HomeDirectory $HomeDirectory
    If ($AccountName -eq $AccountName)
    {
        Add-ADGroupMember -Identity "ALL_USERS" -Member $Accountname
    } 
    If ($AccountName -eq $AccountName)
    {
        Add-ADGroupMember -Identity "000-All users" -Member $Accountname
    }
}

我收到此错误:

Add-ADGroupMember : Cannot find an object with identity: '000-All users' under:     'DC=*****,CD=local'.
At C:\psscripts\create\Groups.ps1:15 char:23
+     {ADD-ADGroupMember <<<<  -Identity "000-All users" -Member $Accountname
    + CategoryInfo          : ObjectNotFound: <000-All users:ADGroup> [Add-ADGroupMember], ADIdentityNotFoundException
    + FullyQualifiedErrorId : Cannot find an object with identity: '000-All users' under: 'DC=*****,DC=local'.,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember

然而,我可以使用ADUC图形界面将用户添加到000-All用户组。

同样,我在此之前运行脚本,使用SAM创建用户;显示名称; EXCH。电子邮件帐户;密码;域中的特定OU,并且它没有错误地执行,我可以进入图形界面并查看用户应该配置的所有相关细节的位置,但是一些用户返回相同的对象找不到&#39;当我尝试执行部分工作的部分脚本ALL_USERS组时出错。具体来说,它的用户使用带有联音的姓氏,例如:Markiem-Chalmers或Tatem-Brown。

我知道Add-ADGroupMember的语法是正确的,因为我复制并粘贴了先前的字符串,它确实正确执行,只是将组的名称从ALL_USERS更改为000-All用户,而我和#39; ve double,triple,quadruple检查拼写是否正确。任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:3)

回复你在评论中提出的问题:

Add-ADGroupMember只能按DN,SAM,GUID或Sid进行搜索;您无法直接通过该cmdlet按名称或其他属性进行搜索。

可以在CSV中的条目上运行Get-ADUser以使用Name或其他方式提取SAM,但如果问题是SAM被截断,为什么不进行子串?< / p>

$limit = #The length a name can be before it gets truncated
if($AccountName.Length -gt $limit)
{
    $AccountName = $AccountName.Substring(0,$limit)
}