获取错误,成功loginPowerShell脚本导入批量AD用户

如果我能够生成成功和错误日志,该脚本将为我提供最好的批量AD用户创build脚本。

这个脚本只需要在Csv上的名字和姓氏中断几分钟。 生成日志需要帮助,如成功创build的用户和帐户列表已经存在或无法创build。

$Users=Import-csv c:\users.csv ForEach($User in $Users) { $FullName = $User.FirstName + " " + $User.LastName $SAM = $User.FirstName.Substring(0,1) + $User.LastName #example John snow will be Jsnow #$Sam=$User.FirstName+$User.LastName example john snow will be Johnsnow #$Sam=$User.FirstName example john snow will be John #$Sam= $User.firstName + "." + $User.lastName example john snow will be John.snow $dnsroot = '@' + (Get-ADDomain).dnsroot $UPN = $SAM + "$dnsroot " $OU="CN=users, DC=Domain,DC=COM" $email=$Sam + "$dnsroot " New-ADUser -Name $FullName -AccountPassword (ConvertTo-SecureString “Password!1234” -AsPlainText -force) -GivenName $User.FirstName -Path $OU -SamAccountName $SAM -Surname $User.LastName -UserPrincipalName $UPN -EmailAddress $Email -Enabled $TRUE} Write-Host "created $FullName" 

 $Users=Import-csv c:\users.csv $failedUsers = @() $usersAlreadyExist =@() $successUsers = @() $VerbosePreference = "Continue" $LogFolder = "C:\temp" ForEach($User in $Users) { $FullName = $User.FirstName + " " + $User.LastName $SAM = $User.FirstName.Substring(0,1) + $User.LastName $dnsroot = '@' + (Get-ADDomain).dnsroot $UPN = $SAM + "$dnsroot " $OU="CN=users, DC=Domain,DC=COM" $email=$Sam + "$dnsroot " try { if (!(get-aduser -Filter {samaccountname -eq "$SAM"})){ New-ADUser -Name $FullName -AccountPassword (ConvertTo-SecureString “Password!1234” -AsPlainText -force) -GivenName $User.FirstName -Path $OU -SamAccountName $SAM -Surname $User.LastName -UserPrincipalName $UPN -EmailAddress $Email -Enabled $TRUE Write-Verbose "[PASS] Created $FullName" $successUsers += $FullName } else { Write-Warning "[WARNING] Samaccount for username [$($FullName)] already exists" $usersAlreadyExist += $FullName } } catch { Write-Warning "[ERROR]Can't create user [$($FullName)] : $_" $failedUsers += $FullName } } if ( !(test-path $LogFolder)) { Write-Verbose "Folder [$($LogFolder)] does not exist, creating" new-item $LogFolder -Force } Write-verbose "Writing logs" $failedUsers | out-file -FilePath $LogFolder\FailedUsers.log -Force -Verbose $usersAlreadyExist | out-file -FilePath $LogFolder\usersAlreadyExist.log -Force -Verbose $successUsers | out-file -FilePath $LogFolder\successUsers.log -Force -Verbose