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

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

如果我能够生成成功和错误日志,那么这个脚本对我来说将是最好的批量 AD 用户创建脚本。

此脚本只需要 Csv 上的 FirstName 和 Lastname,可以节省几分钟。需要帮助生成日志,例如成功创建的用户列表以及已存在或创建失败的帐户。

$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"

答案1

$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

相关内容