将用户从CSV创建为AD

时间:2017-04-16 05:21:47

标签: powershell

我正在尝试构建一个脚本,该脚本将带有字段的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

我有几个问题:

  1. 我需要在创建用户之前检查用户是否存在。

  2. 将MobilePhone属性复制到ipphone属性,不带前导零。 (如果手机为05555551111,则ipphone为5555551111

  3. 将不带前缀SamAccountname的{​​{1}}属性复制到SYSEmployeeID属性。

  4. 尝试运行脚本时,我收到以下错误消息:

      

    New-ADUser:找不到与参数名称“Pager”匹配的参数。       在行:45 char:15

         

    Add-ADGroupMember:找不到具有标识的对象:'用户名'在'DC = contoso,DC = local'下。       在行:47 char:22

    pager

1 个答案:

答案 0 :(得分:0)

错误很清楚错误。 New-ADUser没有PagerIPPhone的参数(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"

    }

}