我正在尝试构建一个脚本,该脚本将带有字段的CSV,并在具有该信息的特定OU中的AD中创建用户。
Sam,Firstname,LastName,MobilePhone,mail SYS12345678,Test,Test,05555551111,aa@contoso.com SYS12534644,Test,Test,05555551155,bb@contoso.com
用户创建后,我想导出如下所示的CSV文件。
Username :SYS12345678 Password : Ja1304Sp Username :SYS25453234 Password : Ja1304Hg
我有几个问题:
我需要在创建用户之前检查用户是否存在。
将MobilePhone属性复制到ipphone属性,不带前导零。 (如果手机为05555551111
,则ipphone为5555551111
)
将不带前缀SamAccountname
的{{1}}属性复制到SYS
和EmployeeID
属性。
尝试运行脚本时,我收到以下错误消息:
New-ADUser:找不到与参数名称“Pager”匹配的参数。 在行:45 char:15
Add-ADGroupMember:找不到具有标识的对象:'用户名'在'DC = contoso,DC = local'下。 在行:47 char:22
pager
答案 0 :(得分:0)
错误很清楚错误。 New-ADUser
没有Pager
和IPPhone
的参数(cmdlet在注意到这一点之前失败),请参阅New-ADUser @ Technet以获取参数列表。尝试使用otherAttributes
进行设置。
您可以在创建之前使用Get-ADUser
搜索samaccountname。如果它没有返回任何内容 - >继续。尝试:
Import-Module ActiveDirectory
$UserList = Import-CSV -Path C:\Export\CreateUsers.csv
$targetOU = 'OU=USERS,OU=TEST,DC=contoso,DC=local'
$upnDomain = 'contoso.local'
$Path = "C:\Export\UserOutput.csv"
foreach ($Person in $UserList) {
#If username does not exist
if(-not(Get-ADUser -Filter "SamAccountName -eq '$($Person.Sam)'")) {
$Password = "{0}{1}{2}" -f $Person.Firstname.Substring(0, 2), (Get-Date).ToString("ddMM"), $Person.Lastname.Substring(0, 2)
$useritems = @{
GivenName = $Person.Firstname
Surname = $Person.LastName
Department = "TEST"
AccountPassword = ConvertTo-SecureString -String $Password -AsPlainText -force
ChangePasswordAtLogon = $false
Enabled = $true
Description = "TEST"
DisplayName = "$($Person.Firstname) $($Person.Lastname)"
Name = "$($Person.Firstname) $($Person.Lastname)"
SamAccountName = $Person.Sam
Office = "XXX"
employeeID = $Person.TempEmployeeID
title = "XXX"
initials = $Person.initials
company = "Contoso"
EmailAddress = $Person.mail
Manager = "XXXX"
EmployeeID = $Person.Sam.Replace("SYS","")
OtherAttributes = @{
Pager = $Person.Sam.Replace("SYS","")
IPPhone = $Person.MobilePhone -replace '^0'
}
UserPrincipalName = "$($Person.Sam)@$upnDomain"
}
New-ADUser @useritems -Path $targetOU
Add-ADGroupMember -Identity "Test_Group" -Members $Person.Sam
Add-Content -Path $Path -Value "Username: $($Person.Sam) Password: $Password"
}
}