此脚本目前在从CSV文件导入数据后创建新用户
Import-Module ActiveDirectory
Import-Csv "C:\testcsv.csv" | ForEach-Object {
$userPrincinpal = $_."samAccountName" + "@NWTC.local"
New-ADUser -Name $_.Name `
-Path $_."ParentOU" `
-SamAccountName $_."samAccountName" `
-UserPrincipalName $userPrincinpal `
-AccountPassword (ConvertTo-SecureString "Password1" -AsPlainText -Force) `
-ChangePasswordAtLogon $false `
-Enabled $true
}
这是我从中导入的csv文件:
Name,samAccountName,ParentOU,Group
Test Test1,TTest1,"OU=Business,DC=NWTC,DC=local",TestGroup
创建用户后,我想将它们添加到已经存在的组中。将有不同的组我想要添加不同的用户,但每人只有1组。
我一直在玩Add-AdGroupMember
,但我不确定如何继续。这样的事情:Add-ADGroupMember -Members $_.Members
。这是我第一次使用CSV,所以我在新的领域
答案 0 :(得分:1)
New-ADuser
不支持此功能,因此您必须在事后自行完成此操作。您可以做的是让New-ADUser
吐出它创建的AD用户对象,并将其与Add-ADGroupMember
一起使用。
$newUserProperties = @{
Name = $_.Name
Path = $_."ParentOU"
SamAccountName = $_."samAccountName"
UserPrincipalName = $_."samAccountName" + "@NWTC.local"
AccountPassword = (ConvertTo-SecureString "Password1" -AsPlainText -Force)
ChangePasswordAtLogon = $false
Enabled = $true
}
try{
$newADUser = New-ADUser @newUserProperties -PassThru
Add-ADGroupMember -Identity $_.Group -Members $newADUser.SamAccountName
} catch {
Write-Warning "Could not create $($newUserProperties.samaccountname)"
}
错误处理是粗略的,但应以某种形式存在,以解决源数据中的失败或现有用户的误解。基本上只需获取$newADUser
并将其用于Add-ADGroupMember
我们在这里使用splatting参数。这样你就不必担心使用反引号来获得良好的格式化代码。
答案 1 :(得分:1)
在创建新用户后在Add-ADGroupMember
中添加ForEach-Object
:
Import-Module ActiveDirectory
Import-Csv "C:\testcsv.csv" | ForEach-Object {
$userPrincinpal = $_."samAccountName" + "@NWTC.local"
New-ADUser -Name $_.Name `
-Path $_."ParentOU" `
-SamAccountName $_."samAccountName" `
-UserPrincipalName $userPrincinpal `
-AccountPassword (ConvertTo-SecureString "Password1" -AsPlainText -Force) `
-ChangePasswordAtLogon $false `
-Enabled $true
Add-ADGroupMember -Identity 'AD_GROUP_WHERE_YOU_ADD_MEMBERS' -Members $_.samAccountName
}