我一直在研究一个脚本,该脚本可通过PowerShell导入Active Directory中分配给多个组的用户。脚本工作正常,但是我想知道我是否可以改进脚本,也许你们对脚本有任何建议或改进吗?
PowerShell脚本:Import_BulkUsers.ps1
FlowSession
CSV文件:Gebruikers.csv Gebruikers.csv
答案 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
所以这只是一般性的想法,您需要对其进行测试/调整。不确定它是否比原始代码更好。