Powershell Sample: Looping Through a List of Servers and Copying Files
- By: rcable
- On: 05/16/2010 15:31:00
- In: Windows Powershell
- Comments: 0
The scenario:
I have three different servers running the same application. There is application data on each server that needs to be backed up and stored in a folder named in a date format but it is not necessarily the date the script is run. The folder structure is exactly the same on each server. I needed a script that could make a new folder to store the backed up data. I prompt the user to name the new folder defined on 3 different servers and copy files from another folder to this new folder, essentially creating a backup of data from a root folder to the new folder.
# Script name: Backup_Data.ps1
# Created on: 2010-05-14
# Author: Rick Cable
# Purpose: Backup Files
#new folder name in date format mm-dd-yy
$NewFolderName = "" #Stores the name of the folder
#Create array of Servers
$Servers = @("Server1","Server2","Server3")
$ServerName = @("Server 1 Description","Server 2 Description","Server 3 Description")
#Prompt user to enter the new folder name
$NewFolderName = read-Host "Enter the name of the new folder in date format mm-dd-yy"
#Function to process the files for each server in the array list.
Function Backup {
#Loop throug each of the servers
for ($i = 0; $i -le $Servers.length -1; $i++)
{
write-Host $Servers[$i]
$BasePath = "\\" + $Servers[$i] + "\Share\"
$DonePath = $BasePath + "\Backup\" + $NewFolderName + "\"
if (test-Path $DonePath) 'if folder already exists
{
write-Host "Copying files for" $ServerName[$i]
$FilePath = $BasePath + "*.dfm"
Copy-Item $FilePath $DonePath
write-Host "Copying log files"
$FilePath = $BasePath + "*.log"
Copy-Item $FilePath $DonePath
write-Host "Copying txt files"
$FilePath = $BasePath + "*.txt"
Copy-Item $FilePath $DonePath
write-Host "Files Copied"
}
else
{
[IO.Directory]::CreateDirectory($DonePath)
write-Host "Copying files for" $ServerName[$i]
$FilePath = $BasePath + "*.dfm"
Copy-Item $FilePath $DonePath
write-Host "Copying log files"
$FilePath = $BasePath + "*.log"
Copy-Item $FilePath $DonePath
write-Host "Copying txt files"
$FilePath = $BasePath + "*.txt"
Copy-Item $FilePath $DonePath
write-Host "Folder Created and Files Copied"
}
}
}
#Run the function
Backup
Comments
There have been no comments made on this article. Why not be the first and add your own comment using the form below.
Leave a comment
Commenting is restricted to registered users only. Please register or login now to submit a comment.