Below is the script I want to execute. The problem here is that as soon as an exception occurs, it stops executing, I used continue in the catch block, but that didn't work. How to make it work even after an exception occurs, it should loop in foreach .
I also used a while($true) , but it went into an infinite loop. How to do it?
$ErrorActionPreference = "Stop"; try { # Loop through each of the users in the site foreach($user in $users) { # Create an array that will be used to split the user name from the domain/membership provider $a=@ () $displayname = $user.DisplayName $userlogin = $user.UserLogin # Separate the user name from the domain/membership provider if($userlogin.Contains('\')) { $a = $userlogin.split("\") $username = $a[1] } elseif($userlogin.Contains(':')) { $a = $userlogin.split(":") $username = $a[1] } # Create the new username based on the given input $newalias = $newprovider + "\" + $username if (-not $convert) { $answer = Read-Host "Your first user will be changed from $userlogin to $newalias. Would you like to continue processing all users? [Y]es, [N]o" switch ($answer) { "Y" {$convert = $true} "y" {$convert = $true} default {exit} } } if(($userlogin -like "$oldprovider*") -and $convert) { LogWrite ("Migrating User old : " + $user + " New user : " + $newalias + " ") move-spuser -identity $user -newalias $newalias -ignoresid -Confirm:$false LogWrite ("Done") } } } catch { LogWrite ("Caught the exception") LogWrite ($Error[0].Exception) }
source share