Monday, June 22, 2020

Robocopy files from source to destination;




Robocopy files from source to destination;
In times, you might need to move folders/files from location A to location B. Following server will be perfect fit for the mission. When running the script you will need to adjust two variables


#(1)_. Add vars, surce and destination
$dataSouce   = '\\SourceServer\d$\Scripts\'
$dataDestin  = '\\DestinServer\d$\' 


The Function I have created called “Function-RoboCopy.ps1” will use following variables.

Function-RoboCopy -SourcePath $dataSouce -DestinationPath $dataDestin -LogPath $LogFile 



Rest of the script is also pretty easy to read. I will be adding few other functions to make sure source exist, , script will stop is it does not. Destination folder will also be created, assuming path is accessible.
Here it comes;

#(1)_. Add vars, surce and destination
$dataSouce   = '\\SourceServer\d$\Scripts\'
$dataDestin  = '\\DestinServer\d$\'

#(2)_.Construct Log file
$timestamp = (Get-Date -format 'dd-MMM-yyyy-HH-mm-ss-')
$fileName  = 'RoboCopy.LOG'
$logname   = $timestamp+$Filename 
$LogFile   = ($dataDestin +$logname )


#(3)_.Function-Check-Source if does not exist, stop
   Function Function-Check-Source{
 
  [CmdletBinding()]
  param(
    [parameter(
     Mandatory         = $true,
     ValueFromPipeline = $true)]
      [string]$SourcePath)

Try{

  If (!(Test-Path $dataSource)){
     Write-Host 'CANNOT locate file' -ForegroundColor White -BackgroundColor Red
     Write-Host 'Script will stop' -ForegroundColor Yellow
     break;
     }


}catch{
  
    $errormessage = $($PSItem.ToString())
    Write-Warning 'Error has occoured'
    Write-host 'Problem FOUND:' $errormessage -ForegroundColor Red -BackgroundColor Black
   }
}


#(4)_.Function to check/create destination folder
   Function Function-create-ReportFolder{
 
  [CmdletBinding()]
  param(
    [parameter(
     Mandatory         = $true,
     ValueFromPipeline = $true)]
      [string]$ReportPath)

Try{

if (!(Test-Path -Path $ReportPath))
{
  New-Item -Type Directory -Path $ReportPath -ErrorAction Stop | Out-Null
}

}catch{
  
    $errormessage = $($PSItem.ToString())
    Write-Warning 'Error has occoured'
    Write-host 'Problem FOUND:' $errormessage -ForegroundColor Red -BackgroundColor Black
   }
}




#(5)_.Function-Copy-Scripts source/Destination
   function Function-RoboCopy{

  [CmdletBinding()]
  param(
  [Parameter(Mandatory=$True)]
  [String]$SourcePath,
  [String]$DestinationPath,
  [String]$LogPath  
  ) 
 
   $Options   = ("/B","/MIR", "/XJ", "/FFT", "/R:0", "/LOG:$LogFile")


   Try{

        Write-host 'Starting RoboCopy now' -fore Green
        robocopy $SourcePath $DestinationPath $Options


      }Catch{

          $errorcode = $($PSItem.ToString())
          Write-Warning 'Error has occoured'
          Write-host "Problem FOUND: $errorcode" -f red -b White

      }
  }









#(6)_.Run function check source
   Function-Check-Source -SourcePath $dataSour1e

#(7)_.Run Function-create-ReportFolder
    Function-create-ReportFolder -ReportPath $Destin

#(8)_.Function-RoboCopy
   Function-RoboCopy -SourcePath $dataSouce -DestinationPath $dataDestin -LogPath $LogFile  




Azure Solutions Architect
AWS Certified Cloud Practitioner
Azure Certified Security Engineer Associate
https://simplepowershell.blogspot.com
https://cloudsec365.blogspot.com
https://msazure365.blogspot.com
https://twitter.com/Message_Talk



No comments:

Post a Comment