添加多个用户而不进行csv导入

时间:2017-12-15 07:27:17

标签: powershell csv

我正在尝试添加多个用户,方法是使用不同的用户名多次编写脚本。有可能重复这行代码以不同的方式添加多个用户名吗?哪个更有效,更容易,而不是导入csv文件。

New-ADUser -Name "Test Eksamen" -GivenName "Test" -Surname Eksamen -SamAccountName Olf -UserPrincipalName Test@test1.local -path "OU=powershell, DC=test, DC=local"

3 个答案:

答案 0 :(得分:3)

抱歉,我无法发表评论,因为我没有足够的声誉。 对我来说有点不清楚csv导入有什么问题,你用“更简单的方法”是什么意思。在我看来,导入csv是最方便的方式。

您可以使用名称和姓氏的数组。

    $names = @("Neil","Albert", "Nikola")
    $surnames = @("Degrasse", "Einstein", "Tesla")

foreach ($user in (0.. ($names.Length -1))){
    $user_name = $names[$user]
    $user_surname = $surnames[$user]
    New-ADUser -Name "$user_name $user_surname" -GivenName $user_name -Surname $user_surname -SamAccountName "$user_name.$user_surname" -UserPrincipalName "$user_name@test.local" -Path "OU=powershell, DC=test, DC=local"
    }

如果不是你想要的话,我再次感到抱歉,由于缺乏声誉,我无法发表评论。

答案 1 :(得分:0)

正如我在评论中提到的,你可以将它们添加到某个数组或arraylist中,无论如何,像bellow。

顺便说一下,我猜csv可能是最舒服的方式。

  

注意 - 因为我不知道如何在单个PS脚本中创建一些对象,所以我使用了带有自定义属性的标准对象

#your record New-ADUser -Name "Test Eksamen" -GivenName "Test" -Surname Eksamen -SamAccountName Olf -UserPrincipalName Test@test1.local -path "OU=powershell, DC=test, DC=local"


 #custom object definition-example of 1 member
 $member= New-Object System.Object
 $member | Add-Member -type NoteProperty -name cName -value "Test Eksamen"
 $member | Add-Member -type NoteProperty -name cGivenName -value "Test"
 $member | Add-Member -type NoteProperty -name cSurname -value "Eksamen"
 $member | Add-Member -type NoteProperty -name cSamAccountName -value "Olf"
 $member | Add-Member -type NoteProperty -name cUserPrincipalName -value "Test@test1.local"
 $member | Add-Member -type NoteProperty -name cpath -value "OU=powershell, DC=test, DC=local"

#add into some list
 $memberList = New-Object System.Collections.ArrayList
 $memberList.Add($member)

#iteration and adding each 
  foreach($actMember in $memberList){
    New-ADUser -Name $actMember.cName  -GivenName $actMember.cGivenName -Surname $actMember.cName -SamAccountName $actMember.cSurname -UserPrincipalName $actMember.cUserPrincipalName -path $actMember.cpath
   }

其他方式可以是例如。分别存储每个数据,例如来自@Tesla Great

的示例
$names = @("Neil","Albert", "Nikola")
#should be exactly the same
#$names = "Neil","Albert", "Nikola"
$givenNames= @("Degrasse", "Einstein", "Tesla")
#..... other params

#and iterate 
For ($i=0; $i -le ($names.Length -1); $i++) {
    New-ADUser -Name $names[i] -GivenName $givenNames[i] ... etc
}
  

第二个解决方案是让我说有点凌乱,因为这些变量之间没有数据完整性(你可以非常简单地,例如。交换一些值,或者做一些丢失等),但第一个是严重的代码< / p>

答案 2 :(得分:0)

您也可以随机创建用户user1.2..3等

$names=1..1000
$x="user"
Foreach($name in $names){
$nm=$x + "$name"
$Password = (ConvertTo-SecureString -AsPlainText 'P@ssw0rd@123' -Force)
New-ADUser -GivenName $x -Surname $name -Name $nm -Enabled $true -AccountPassword $password -SamAccountName $nm -WhatIf
}