O PowerShell 2.0 oferece suporte a blocos try / catch , para que você possa capturar e manipular quaisquer exceções.
Você pode colocar um Write-Host
no seu bloco catch para fazer o eco no console, qual usuário está causando o problema no script.
Seu script, por exemplo, ficaria assim.
$objOU=[ADSI]“LDAP://OU=People,DC=testdomain,DC=com”
$dataSource=import-csv “test users2.csv”
foreach($dataRecord in $datasource)
{
try
{
$cn=$dataRecord.FirstName + ” ” + $dataRecord.LastName
$sAMAccountName=$dataRecord.UserName
$givenName=$dataRecord.FirstName
$sn=$dataRecord.LastName
$sAMAccountName=$sAMAccountName.ToLower()
$displayName=$givenName + " " + $sn
$userPrincipalName=$sAMAccountName + “@testdomain.com”
$sISID=$dataRecord.Sisid
$objUser=$objOU.Create(“user”,”CN=”+$cn)
$objUser.Put(“sAMAccountName”,$sAMAccountName)
$objUser.Put(“userPrincipalName”,$userPrincipalName)
$objUser.Put(“displayName”,$displayName)
$objUser.Put(“givenName”,$givenName)
$objUser.Put(“sn”,$sn)
$objUser.Put("description",$dataRecord.Gender + ", " + "Class of " + $dataRecord.Graduation + ", " + $sISID)
$objUser.SetInfo()
$objUser.SetPassword($dataRecord.Password)
$objUser.psbase.InvokeSet(“AccountDisabled”,$false)
$objUser.SetInfo()
}
catch
{
Write-Host "*** Exception Handler ***"
Write-Host "Problem username: " $dataRecord.UserName
Write-Host "*************************"
}
}
Por motivos que o script pode falhar, o sAMAccountName é exclusivo (por exemplo, John Smith e James Smith sendo ambos jsmith) e o sAMAccountName contém caracteres especiais (símbolos, letras com acentos etc.)? Há algumas razões pelas quais posso pensar que isso pode causar uma exceção.