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

Microsoft M365 F3 licensing Limitations and Confusion

  If you are working in regulated environment you could be dealing with F3 license for some of your users and I am sure you have read MS lic...