Public/Start-Migration.ps1
<#
.SYNOPSIS Starts the migration process for user data. .DESCRIPTION Constructs the source and destination paths and initiates the migration process. Supports migrating a specific folder if specified. .PARAMETER SourceUsername The source username (e.g., "testu"). .PARAMETER DestinationUsername The destination username (e.g., "test.user"). .PARAMETER SharePath The shared path containing the user data (e.g., "\\testing\w10-home"). .PARAMETER LogFilePath The full path to the log file. .PARAMETER Folder The specific folder to migrate (e.g., "Desktop"). Optional. If not provided, the entire source directory is migrated. .PARAMETER DryRun Optional switch to test the migration process without copying files. .EXAMPLE Start-Migration -SourceUsername "testu" -DestinationUsername "test.user" -SharePath "\\testing\w10-home" -LogFilePath "C:\Logs\MigrationLog.log" .EXAMPLE Start-Migration -SourceUsername "testu" -DestinationUsername "test.user" -SharePath "\\testing\w10-home" -LogFilePath "C:\Logs\MigrationLog.log" -Folder "Desktop" #> function Start-Migration { param ( [Parameter(Mandatory = $True)] [string]$SourceUsername, [Parameter(Mandatory = $True)] [string]$DestinationUsername, [Parameter(Mandatory = $True)] [string]$SharePath, [Parameter(Mandatory = $True)] [string]$LogFilePath, [Parameter(Mandatory = $False)] [string]$Folder, # Optional parameter for a specific folder to migrate [switch]$DryRun ) # Construct source and destination base paths $sourcePath = Join-Path -Path $SharePath -ChildPath $SourceUsername $destinationPath = Join-Path -Path $SharePath -ChildPath $DestinationUsername # Initialize the log $LogFilePath = Initialize-Log # Call Migrate-UserData with or without the Folder parameter if ($PSBoundParameters.ContainsKey('Folder')) { Write-Log -Message "INFO: Initiating migration of specific folder: $Folder" -LogFilePath $LogFilePath Migrate-UserData -SourcePath $sourcePath -DestinationPath $destinationPath -LogFilePath $LogFilePath -Folder $Folder -DryRun:$DryRun } else { Write-Log -Message "INFO: Initiating full user data migration" -LogFilePath $LogFilePath Migrate-UserData -SourcePath $sourcePath -DestinationPath $destinationPath -LogFilePath $LogFilePath -DryRun:$DryRun } } |