# ------------------------------------------------------------ # Copy Leica LAS X settings for all users listed in Users.csv # ------------------------------------------------------------ $CsvFile = "C:\Temp\Users.csv" $DestinationRoot = "E:\OldUsers" $LogFile = Join-Path $DestinationRoot "CopyLeicaSettings.log" # Create destination folder if it does not exist New-Item -ItemType Directory -Force -Path $DestinationRoot | Out-Null # Start logging Start-Transcript -Path $LogFile if (-not (Test-Path $CsvFile)) { Write-Host "ERROR: CSV file not found: $CsvFile" Stop-Transcript exit } $Copied = 0 $Missing = 0 $Errors = 0 foreach ($Entry in Import-Csv $CsvFile) { $UserName = $Entry.Name $Source = Join-Path "C:\Users" "$UserName\AppData\Roaming\Leica Microsystems\LAS X" $Destination = Join-Path $DestinationRoot "$UserName\AppData\Roaming\Leica Microsystems\LAS X" Write-Host "" Write-Host "----------------------------------------" Write-Host "User: $UserName" if (Test-Path $Source) { Write-Host "Source found." Write-Host "Copying..." New-Item -ItemType Directory -Force -Path $Destination | Out-Null robocopy ` $Source ` $Destination ` /MIR ` /COPY:DAT ` /DCOPY:DAT ` /R:1 ` /W:1 $RC = $LASTEXITCODE # Robocopy exit codes: # 0-7 = success or minor differences # >=8 = error if ($RC -lt 8) { Write-Host "Copy successful." $Copied++ } else { Write-Host "ERROR: Robocopy failed (ExitCode=$RC)" $Errors++ } } else { Write-Host "No Leica settings found." $Missing++ } } Write-Host "" Write-Host "========================================" Write-Host "Migration summary" Write-Host "========================================" Write-Host "Users processed : $($Copied + $Missing + $Errors)" Write-Host "Copied : $Copied" Write-Host "Not found : $Missing" Write-Host "Errors : $Errors" Write-Host "========================================" Stop-Transcript