Powershell脚本创建批量用户并将其分配给多个组

时间:2018-11-06 13:26:09

标签: powershell import active-directory

我一直在研究一个脚本,该脚本可通过PowerShell导入Active Directory中分配给多个组的用户。脚本工作正常,但是我想知道我是否可以改进脚本,也许你们对脚本有任何建议或改进吗?

PowerShell脚本:Import_BulkUsers.ps1

FlowSession

CSV文件:Gebruikers.csv Gebruikers.csv

2 个答案:

答案 0 :(得分:0)

我认为您应该更多地参考PowerShell样式指南,这使脚本将来更易于阅读和修改。另外,您应该在脚本中使用更多错误处理。

例如添加错误处理并使您自己变得容易:

foreach($Group in $Groups){
    try{
        Add-ADPrincipalGroupMembership -Identity $username -MemberOf $Group
        Write-Host "Successfully added groupmembership for '$username' to '$group'" -ForegroundColor Green
    }catch{
        Write-Host "Failed to add groupmembership for '$username' to '$group'" -ForegroundColor Red
    }
}

对于下一个,也绝对建议您使用try / catch,因为如果例如1的值不正确,脚本就会停止。

try{ 
    New-ADUser -Name $Displayname -GivenName $voornaam -Surname $achternaam -DisplayName $Displayname -SamAccountName $username -UserPrincipalName $UserPrincipalName -HomeDrive $homefolderdrive -HomeDirectory $homefolder -ProfilePath $profilefolder -Path $OU -AccountPassword $SecurePass -PasswordNeverExpires $true -Enabled $True
}catch{
    Write-Host "Failed to create AD user '$Displayname'" -ForegroundColor Red
}

例如,您可以采取以下措施来防止New-ADUser CMDlet出现空值:

foreach($user in $users){
    $params = @{}
    if($user.Voornaam){
        $params += @{
            givenName = $user.Voornaam
        }
    }
    if($user.Achternaam){
        $params += @{
            surName = $user.Achternaam
        }
    }
    try{
        New-ADUser @params
    }catch{
        Write-Host "Failed to create AD user '$($user.displayName)'" -ForegroundColor Red
    }
}

这样,您可以更轻松地进行操作!希望这会有所帮助。

祝你好运

答案 1 :(得分:0)

如果您要说的是一次添加多个用户,可以尝试这样的操作

Import-Module ActiveDirectory

$user1 = [Microsoft.ActiveDirectory.Management.ADUser]@{GivenName="John"; Surname="Doe"; SamAccountName = "JohnDoe"}

$user2 = [Microsoft.ActiveDirectory.Management.ADUser]@{GivenName="John"; Surname="Smith"; SamAccountName = "JohnSmith"}


$users = $user1, $user2

Add-ADGroupMember -Identity "YOUR-AD-GROUP" -Members $users

所以这只是一般性的想法,您需要对其进行测试/调整。不确定它是否比原始代码更好。