【发布时间】:2019-01-28 10:50:35
【问题描述】:
我的任务是创建一所学校的用户价值(英国中学)。 PS从CSV创建用户,我需要做的是将新创建的用户同时添加到各个组。
我使用的代码如下
$DCName = '<DC FQDN>'
Import-Csv -Path "D:\Import.csv" |
ForEach-Object {
$Displayname = $_.'FirstName' + " " + $_.'LastName'
$UPN = $_.'UPN'
$GroupName = $_.'GroupName'
$Prop = @{
Name = $Displayname
DisplayName = $_.'FirstName' + " " + $_.'LastName'
GivenName = $_.'FirstName'
Surname = $_.'LastName'
UserPrincipalName = $UPN
EmailAddress = $UPN
SamAccountName = $_.'SAM'
AccountPassword = (ConvertTo-SecureString $_.'Password' -AsPlainText -Force)
Enabled = $true
Path = $_.'OU'
ChangePasswordAtLogon = $false
Title = $_.'JobTitle'
StreetAddress = $_.'Street'
City = $_.'Town'
State = $_.'County'
PostalCode = $_.'PostCode'
OfficePhone = $_.'Telephone'
Company = $_.'Company'
Department = $_.'Department'
HomeDrive = $_.'HomeDrive'
HomeDirectory = $_.'Home-Directory'
OtherAttributes = @{
'extensionAttribute1'= $_.'ExtendedAttribute1';
'extensionAttribute2'= $_.'ExtendedAttribute2';
'extensionAttribute14'= $_.'ExtendedAttribute14';
'extensionAttribute15'= $_.'ExtendedAttribute15';
'proxyAddresses' = "SMTP:" + $UPN;}
Server = $DCName
}
New-ADUser @prop
Add-ADGroupMember -Identity $GroupName -Members $_.'SAM'
}
创建的用户具有正确设置的所有属性。它失败并出现以下错误
Add-ADGroupMember : Cannot find an object with identity: 'Test.User' under: 'DC=AD,DC=example,DC=uk'.
At C:\Scripts\NewUserFromCSV2.ps1:47 char:10
+ Add-ADGroupMember -Identity $GroupName -Members $_.'SAM'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Test.USer:ADPrincipal) [Add-ADGroupMember], ADIdentityNotFoundException
+ FullyQualifiedErrorId : SetADGroupMember.ValidateMembersParameter,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember
看起来 Add-ADGroupMember 命令找不到刚刚创建的用户,但是,如果是这种情况,我不明白为什么。
目前,我的 CSV 在“GroupName”中只有一个组,将用户添加到多个组的最佳方法是什么?例如学校全体员工、教职员工、科学教师等。
提前感谢您提供的任何帮助。
【问题讨论】:
-
很可能是复制问题,您的 DC 尚不知道新用户。您可以通过在两个命令之间添加
Start-Sleep -s 30来添加手动延迟以实现此目的... -
这意味着每个用户至少需要 30 秒才能完成。有近 200 名员工和 1500 名学生 - 这意味着需要 14 多个小时才能完成。
-
将服务器开关添加到 Add-ADGroupMember 命令帮助中吗?
-
这是一个故障查找的建议,看看它是代码还是复制。将两个命令指向同一个服务器可以解决这个问题,但您也可以将所有负载放在单个服务器上。如果您的域设置为可以处理此问题。
-
@JamesC 你不是每天晚上都这样做,对吧?如果对于尚未启用的新 AD 域而言,这只是一次性的事情,那么 14 小时又有什么意义呢?因为如果它运行得更频繁,那么你在那里有纯文本密码有点可怕。事实上,你有这个但不设置“ChangePasswordAtLogon”仍然有点可怕。如果不是更频繁,您可以在晚上离开之前开始它。
标签: powershell active-directory