Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Backing up files is easy with PowerShell. We need the file copy command and task scheduler command. We can complete the process with Robocopy and a new task.
A simple code example for Robocopy
robocopy.exe <SourceDestination> <TargetDestination> /mir /mt:96 /r:3 /w:3 /np /ts /bytes /xd > c:\log.txt
information for robocopy parameters
/mir tells robocopy to use mirror mode
/mt:96 maximum of allowed threads increasing or decreasing this results in different end-times
/r:3 maximum set retry count
/w:3 maximum set wait time before a retry is executed
/np shows no progress
/ts include the timestamp of the source file
/bytes display progress in bytes for easy calculation
/xd $exclude exclude files that set in the "$exclude" variable
> c:\log.text export log.txt
We use the New-ScheduledTaskAction command to create a task.
For example
New-ScheduledTaskAction -Execute "PowerShell.exe"
So we use the New-ScheduledTaskTrigger command to scheduled a task.
New-ScheduledTaskTrigger -At 10:00am –Daily
Let's write our ps script
$Trigger= New-ScheduledTaskTrigger -At 10:00am –Daily $User= "NT AUTHORITY\SYSTEM" $Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "robocopy.exe <SourceDestination> <TargetDestination> /mir /mt:96 /r:3 /w:3 /np /ts /bytes /xd > c:\log.txt" Register-ScheduledTask -TaskName "test" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force
Let's test
Step 1: creating two folders
Soruce destination C:\a
Target destination C:\b
Step 2: I'm uploading test files to the "a" folder.
Step 3: editing my code in source ande target destinations
$Trigger= New-ScheduledTaskTrigger -At 10:00am –Daily $User= "NT AUTHORITY\SYSTEM" $Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "robocopy.exe C:\a C:\b /mir /mt:96 /r:3 /w:3 /np /ts /bytes /xd > c:\log.txt" Register-ScheduledTask -TaskName "test" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Forc
Test all PS script
PS C:\Users\Administrator\Desktop> $Trigger= New-ScheduledTaskTrigger -At 10:00am -Daily
PS C:\Users\Administrator\Desktop> $User= "NT AUTHORITY\SYSTEM"
PS C:\Users\Administrator\Desktop> $Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "robocopy.exe C:\a C:\b /mir /mt:96 /r:3 /w:3 /np /ts /bytes /xd > c:\log.txt"
PS C:\Users\Administrator\Desktop> Register-ScheduledTask -TaskName "test" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest -Force
TaskPath TaskName State
-------- -------- -----
\ test Ready
PS C:\Users\Administrator\Desktop>
PS C:\Users\Administrator\Desktop>
PS C:\> dir
Directory: C:\
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 28.06.2019 11:21 a
d----- 28.06.2019 12:14 b
d----- 15.09.2018 10:19 PerfLogs
d-r--- 27.06.2019 15:42 Program Files
d----- 20.06.2019 09:24 Program Files (x86)
d-r--- 12.06.2019 07:38 Users
d----- 21.06.2019 13:42 Windows
-a---- 28.06.2019 12:14 2494 log.txt
PS C:\>
PS C:\> cd a
PS C:\a> dir
Directory: C:\a
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 28.06.2019 11:21 New folder
d----- 28.06.2019 11:21 New folder (2)
d----- 28.06.2019 11:21 New folder (3)
d----- 28.06.2019 11:21 New folder (4)
-a---- 28.06.2019 11:21 0 New Text Document (2).txt
-a---- 28.06.2019 11:21 0 New Text Document (3).txt
-a---- 28.06.2019 11:21 0 New Text Document.txt
PS C:\a> cd..
PS C:\> cd b
PS C:\b> dir
Directory: C:\b
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 28.06.2019 11:21 New folder
d----- 28.06.2019 11:21 New folder (2)
d----- 28.06.2019 11:21 New folder (3)
d----- 28.06.2019 11:21 New folder (4)
-a---- 28.06.2019 11:21 0 New Text Document (2).txt
-a---- 28.06.2019 11:21 0 New Text Document (3).txt
-a---- 28.06.2019 11:21 0 New Text Document.txt
PS C:\b> cd..
PS C:\>
Hopefully, it has been a useful solution.