#=====================================================================================================#
# Copyright 2014 Robert Stacks
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
#
#=====================================================================================================#
# Original Author: Robert Stacks
# Original Script URL: http://randomtechminutia.wordpress.com/2014/02/03/copy-files-from-one-server-to-another-in-the-same-domain/
# Date: 2/3/2014
# Updated:
# Version: 1.0
#
# Purpose:
# Simple script to copy files from one computer or server to another in the same domain. Example can
# also email a simple report of files copied. Created to move some files hourly and only email when
# something was moved.
#
# Many of the user variables are set with $TRUE or $FALSE for on or off.
#
# Will not work across different domains. Account used to run task from task manager must be a domain
# user with enough rights on both systems to read and write.
#
# Update Notes:
#
#=====================================================================================================#
# Email Settings
$fromAddr
=
"From@domain.com"
# Enter the FROM address for the e-mail alert
$toAddr
=
"To@domain.com"
# Enter the TO address for the e-mail alert
$smtpsrv
=
"mail.domain.com"
# Enter the FQDN or IP of a SMTP relay
# Files to Copy and where they are going
# Local Files should be in the formate of C:\Folder\* for Files only or C:\Folder to copy the folder as well
$Localfiles
=
"C:\Folder\*"
# Remote Path should be UNC path with admin share example \\hostname\c$\pathtocopyto
$Remotefiles
=
"\\hostname\c$\pathtocopyto"
#Enable or Disable Script functions
$EmailAlerts
=
$TRUE
# Turn e-mail alerts on or off. $FALSE or 0 = off
$TestfromPrompt
=
$FALSE
# Turn on output from command line. $FALSE or 0 = no output
$RemoveFilesafterCopy
=
$TRUE
# Remove files after files have been copied over?
#===========================#
#Main Script #
#===========================#
#Get the names of the files we want to transfer
$files
=
Get-childitem
"$Localfiles"
|foreach
{
$_
.Name}
if
(
$files
-ne
$null
)
{
#Generates output to command line if Value = True
if
(
$TestfromPrompt
-eq
$TRUE
)
{
Write-Host
"These are the files being copied"
$files
}
#Copy files to remote computer
copy-item
-path
"$Localfiles"
-Destination
"$Remotefiles"
-Recurse
#Remove Files if Value = True
if
(
$RemoveFilesafterCopy
-eq
$TRUE
)
{
#Remove Files after they have been moved
Remove-Item
"$Localfiles"
}
#Send Email Alert if Value = True
if
(
$EmailAlerts
-eq
$TRUE
)
{
$date
=
Get-Date
-Format
g
Send-MailMessage
-To
$toAddr
-From
$fromAddr
-Subject
"$date Files Copied"
-Body
"The Following Files were moved"
+
$files
-SmtpServer
$smtpsrv
}
}
==========*=================*------------------------------*------------------
------------
Set FSO = CreateObject("Scripting.FileSystemObject") strSourcePath = "C:\Data\Folder1\" strDestinationPath = "\\Server2\d$\Folder2\" File1 = "y-GDetail.txt" File2 = "a-GrpHeader.txt" File3 = "z-GrpDetail.txt" CurrentDate = Year(Now) & Month(Now) & Day(Now) NewFile1 = strDestinationPath & Left(File1, Len(File1)-4) & CurrentDate & Right(File1, 4) NewFile2 = strDestinationPath & Left(File2, Len(File2)-4) & CurrentDate & Right(File2, 4) NewFile3 = strDestinationPath & Left(File3, Len(File3)-4) & CurrentDate & Right(File3, 4) fso.CopyFile strSourcePath & File1, NewFile1 fso.CopyFile strSourcePath & File2, NewFile2 fso.CopyFile strSourcePath & File3, NewFile3 If fso.FileExists(strDestinationPath & NewFile1) And _ fso.FileExists(strDestinationPath & NewFile2) And _ fso.FileExists(strDestinationPath & NewFile3) Then Set objEmail = CreateObject("CDO.Message") objEmail.From = "admin1@fabrikam.com" objEmail.To = "admin2@fabrikam.com" objEmail.Subject = "3 Files Copied to Server2" objEmail.Textbody = "3 Files Copied to Server2 at : " & Now objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smarthost" objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 objEmail.Configuration.Fields.Update objEmail.Send Else MsgBox "Copy Failed" End If MsgBox "Completed"