【问题标题】:Trying to add SAM, country, language and proxyaddress from CSV尝试从 CSV 添加 SAM、国家、语言和代理地址
【发布时间】:2019-08-08 13:20:55
【问题描述】:

所以我有 CSV 文件,其中包含所有这些值 firstname、lastname、SAM、email、department、OU、country、language 和 proxyaddress。

我可以成功创建用户,但不知道如何添加最重要的 SAM 和 proxyaddress,也不知道如何在每个用户属性中添加部门、国家和语言,这些其他值不太重要。

我尝试过的:

Set-Mailbox -Identity $name -EmailAddresses @{add= $proxy}

Get-ADUser -Filter 'Name -like "*"' -SearchBase $ou -Properties * | % {Set-ADUser $_ -add @{proxyAddresses=$proxy}}

Add-ADGroupMember -Identity groupname

代码如下:

Import-Module ActiveDirectory

$securedPassword = ConvertTo-SecureString "" -AsPlainText -Force

$userlist = Import-Csv "C:\users.csv"

ForEach ($row in $userlist) {
    $fname = $row.'givenName'
    $lname = $row.'Lastname'
    $sam = $row.'SAM'
    $mail = $row.'mail'
    $department = $row.'Department'
    $ou = $row.'OU'
    $country = $row.'Country'
    $lang = $row.'Preferredlanguage'
    $proxy = $row.'Proxy'

    $name = $fname + $lname
    $proxy = $row.'Proxy' -split ';'

    New-ADUser -Name "$fname $lname" -GivenName $fname -Surname $lname -UserPrincipalName "$mail" -Path $ou -AccountPassword $securedPassword -ChangePasswordAtLogon $true -EmailAddress $mail

尝试将 SAM 包含到 New-ADUser 时出错:

New-ADUser : The name provided is not a properly formed account name
At C:\test.ps1:28 char:5
+     New-ADUser -sAMAccountName $sam -Name "$fname $lname" -GivenName  ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (CN=Fay,OU=Us...,DC=com:String) [New-ADUser], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:1315,Microsoft.ActiveDirectory.Management.Commands.NewADUser

【问题讨论】:

  • 如果您从 CSV 文件中提供几行内容会有所帮助,因为在您的代码中,您使用的属性与您在问题中命名的字段不同。此外,当您在使用如此多参数的 cmdlet 上使用 Splatting 时,代码会显着改进。

标签: powershell csv active-directory


【解决方案1】:

没有看到您的 CSV 文件,我不能肯定地说,但听起来您的 CSV 的值作为 sAMAccountName 无效。它可以是什么有规则,在the documentation中列出:

此属性必须为 20 个字符或更少以支持早期客户端,并且不能包含以下任何字符:

  • "/ \ [ ] : ; | = , + * ?

【讨论】:

  • CSV 中的 SAM 字段是:AD\firstname.lastname 所以它应该只是 firstname.lastname?然后自动添加 AD\ 部分?
  • 此外,该文件当前使用 SMTP 格式化:email@email.com。包含 SMTP: 部分是否不必要?
  • 正确:您没有在 sAMAccountName 属性中包含域。
  • 对于电子邮件地址:如果您将其添加到mail 属性,则没有smtp: 前缀。如果你把它放在proxyAddresses,那么你就可以了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多