Link to home
Start Free TrialLog in
Avatar of detox1978
detox1978Flag for United Kingdom of Great Britain and Northern Ireland

asked on

Robocopy script with summary email

Hi All,

One of our tape drives in a remote site has died, so I need to copy their data to our head office every night.

Here is the snippet I used to get the data to our central server.

robocopy "C:\department" "\\backup\etl\Dept" /COPYALL /E
robocopy "C:\Users$" "\\backup\etl\Users" /COPYALL /E

Open in new window

Could someone help me with the summary email?

Many thanks
Avatar of kulboy

It’s pretty easy to send an e-mail from PowerShell, all you need to do is copy the template provided and change some of the details.

$EmailFrom = “

$EmailTo = “”

$Subject = “The subject of your email”

$Body = “What do you want your email to say”

$SMTPServer = “”

$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)

$SMTPClient.EnableSsl = $true

$SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“usr”, “pass”);

$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)

You will need to change the following:

$EmailFrom = Your GMail address.
$EmailTo = The recipient’s email address.
$Subject = What you want the subject of the mail to say.
$Body = What you want the main part of the mail to say.
usr = You will need to replace this with your GMail username.
pass = You will need to replace this with your GMail password.

Avatar of Muhammad Burhan
Avatar of oBdA

Link to home
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
First of all, you need to get a log from Robocopy, change your Robocopy command to below:

robocopy "C:\department" "\\backup\etl\Dept" /COPYALL /E /NS /NC /NFL /NDL /NP /Log:c:\logs\logfile.txt
robocopy "C:\Users$" "\\backup\etl\Users" /COPYALL /E /NS /NC /NFL /NDL /NP /Log+:c:\logs\logfile.txt

You could then use the PowerShell script to email the file.

I also note that you have not added any retry attempts counts and interval in the command.  If this is not set in registry then Robocopy will retry items it doesn't have security to or locked files for 1,000,000 times with a wait time of 30 seconds between each retry.  Consider adding /R:0 /W:0 to skip locked and/or file it couldn't access due to permissions.
Avatar of detox1978


Sorry for the slow response.

oBdA, I get the following error message when I run your script.

User generated image
OK, that means you're still on Powershell version 2.
Are you planning to update to v3 ( or v4 ( at some point in the near future anyway (important: check the notes under System Requirements)? Powershell 2 is from 2009, so not really up to date.
Powershell 3 has some nice features ("get-help -ShowWindow", the bug is fixed that ForEach () enters the loop even if the expression is $Null, ordered hash tables, ...) and lots of new modules/cmdlets.
If you can't update at this point, say so, and I'll fix it so that it works with v2.
Thanks for the link.  I've installed PowerShell 4.0.  The server needs a reboot before it can be picked up, so I will report back tomorrow.
Script worked a charm.  many thanks.

EE justifying the fee yet again :-)
Hi All,
would the above script to send email will work for my Robocopy script below.


rem The system date must be set to the mm-dd-yyyy format in the Regional Options for this
rem script to work. Also it's better to use  dash (-) instead of slash (/) as the separator.

set MyDate=%DATE:~0,2%-%DATE:~3,2%-%DATE:~6,4%
set MyTime=%Time:~0,2%-%Time:~3,2%-%Time:~6,2%
set LogFile="F:\Backupfolder\folder1_folder2_%MyDate%_%MyTime%.log"

RoboCopy.exe \\source server\folder1\folder2 \\destination server\folder1\folder2 *.* /S /E /R:0 /XX /FP /NP >>%LogFile%

Any suggestion or assistance  will be a big help.
Many Thanks