我正在使用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检查拼写是否正确。任何帮助都会非常感激!
答案 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)
}