我正在使用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-所有用户组。
同样,在此之前,我正在运行一个脚本,使用SAM创建用户。显示名称;交换电子邮件帐号;密码;和域中的特定OU,并且执行没有错误,我可以进入图形界面,并在应该使用所有相关详细信息的位置查看用户权限,但是某些用户返回相同的“找不到对象”当我尝试执行确实起作用的组脚本部分ALL_USERS组时发生错误。具体来说,是用户的姓氏带有连字符,例如Markiem-Chalmers或Tatem-Brown。
我知道
Add-ADGroupMember
的语法是正确的,因为我从前一个字符串中复制并粘贴了该字符串,该字符串确实可以正确执行,只是将组的名称从ALL_USERS更改为000-All用户,并且我将两倍,三倍,四倍检查拼写是否正确。任何帮助将不胜感激! 最佳答案
在回答您在评论中提出的问题时:Add-ADGroupMember
只能按DN,SAM,GUID或Sid搜索;您无法直接通过该cmdlet按名称或其他属性进行搜索。
您可以在CSV条目上运行Get-ADUser
以使用Name或其他方式提取SAM,但是如果问题是SAM被截断了,为什么不子字符串呢?
$limit = #The length a name can be before it gets truncated
if($AccountName.Length -gt $limit)
{
$AccountName = $AccountName.Substring(0,$limit)
}