【问题标题】:Add Multiple Users To AD, CSV将多个用户添加到 AD、CSV
【发布时间】:2018-07-17 16:37:06
【问题描述】:

我正在尝试通过 CSV 文件夹导入用户。

我有某些参数需要保留,所以我只使用某些字段。

Powershell

$csv = Import-Csv -Path "newusers.csv"
foreach ($User in $csv)
{
#region Data Generation

$DisplayName = $User.'Surname' + " " + $User.'GivenName'

$Mail = $User.'GivenName' + "." + $User.'Surname' + "@" + "royalberkshire.nhs.uk"

$MailAlias = $User.'GivenName' + "." + $User.'Surname' + "@" + $DNSRoot2

$SInitial = $User.'Surname'[0]
$Initial = $User.'GivenName'[0]
$SAMAccountName = $User.'Surname' + "" + $Initial
$SAMAccountLower = $SAMAccountName.ToLower()
$UserPrincipalName = $User.'Surname'+$Initial
$HD = "U"
$HDir = "\\RBHFILRED002\"
$AC = "Users_01$\"
$DH = "Users_02$\"
$IM = "Users_03$\"
$NS = "Users_04$\"
$TZ = "Users_05$\"

$Folder = if ($SInitial -in 'a','b','c'){$AC}
          ElseIf ($SInitial -in 'd','e','f', 'g','h'){$DH}
          ElseIf ($SInitial -in 'i','j','k', 'l','m'){$IM}
          ElseIf ($SInitial -in 'n','o','p', 'q','r','s'){$NS}
          Else {$TZ}

$group1 = "zz Everyone"
$group2 = "Safeboot Domain Users"

$defaultname = $SAMAccountName
$email = $User.'GivenName' + "." + $User.'Surname'
$i = 1
cls

# Create The User



While ((Get-ADUser -Filter "SamAccountName -eq '$SAMAccountName'" -ErrorAction SilentlyContinue) -ne $null){
    $SamAccountName = $defaultname + [string]$i 
    $Mail = $email + [string]$i + "@" + "royalberkshire.nhs.uk"
    $i++

}


$NewUserParams = @{
    path                  = "OU=Users,OU=RBFT,DC=rbbh-tr,DC=nhs,DC=uk"
    SamAccountName        = $SAMAccountName
    Name                  = $SAMAccountName
    DisplayName           = $DisplayName
    GivenName             = $User.'GivenName'
    Surname               = $User.'Surname'
    EmailAddress          = $Mail
    UserPrincipalName     = "$SAMAccountName@rbbh-tr.nhs.uk"
    Title                 = $title
    HomeDrive             = $HomeDrive
    HomeDirectory         = "$HDir$Folder$SAMAccountName"
    Description           = $User.'Description'
    ChangePasswordAtLogon = $true
    PasswordNeverExpires  = $false
    AccountPassword       = $password
    Enabled               = $true
}



New-ADUser @NewUserParams -ErrorAction SilentlyContinue
Add-ADGroupMember -Identity $group1  -Members $SAMAccountName
Start-Sleep -s 10
Add-ADGroupMember -Identity $group2  -Members $SAMAccountName


cls
echo "Please Wait Whilst We Create The AD Account & Create The Exchange Mailbox.."
Start-Sleep -s 30

Enable-Mailbox -Identity $SAMAccountName
cls

echo "Please Wait Whilst We Activate The Exchange Mailbox..."
Start-Sleep -s 15

# Sets The User Up With The Randomised Password, And Re-Encrypts It For Double Protection
Set-ADAccountPassword -Identity $SAMAccountName -Reset -NewPassword (ConvertTo-SecureString -AsPlainText $random -Force)
cls

}

CSV

User    GivenName   Surname Description
User    James        Timms     Test
User    James        Timms     Test
User    Hulk         Hogan     Test
User    Ultimate     Warrior   Test
User    The          Rock      Test
User    Dwayne       Johnson   Test

脚本没有运行。它告诉我无法识别搜索过滤器。

这只是我的错误。

它适用于使用写入主机和输入的单个用户。

但是对于 CSV,它不起作用。

我必须注意,这也是我第一次在 powershell 上通过 CSV 创建用户。

有人知道如何解决这个问题吗?

【问题讨论】:

  • 你的 csv 中有空行吗?
  • @BenH 不。我确实检查了:P

标签: powershell powershell-4.0


【解决方案1】:

我搞定了,

事实证明,当我在 Excel 2016 中构建 CSV 时,它没有添加逗号来分隔值。

我最终在记事本中打开了 CSV,并添加了逗号来分隔值。

Powershell 基于逗号分隔读取值,所以如果没有逗号,它不知道要推出什么值。

【讨论】:

  • 就像加一个逗号一样简单
  • 只是为了进一步添加,您可以在 .csv 文件中使用您想要的任何分隔符。 Import-Csv 有一个 -Delimiter 标志,您可以在其中设置使用的分隔符。
猜你喜欢
  • 2020-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多