队 我正在编写一个PowerShell脚本来自动完成我们每天所做的手动任务之一。我需要专家建议和帮助,因为我是PowerShell脚本的新手。
要求:
有源,目标和备份文件夹。
Source可能在源文件的多个文件夹中包含diff文件和文件。
例如:source \ Login.aspx或source \ App_Code \ BLogic.vb或source \ bin \ servr.dll等。
在复制到目的地时,我的来源文件必须在目的地检查是否存在,如果存在则我们需要复制目标中的当前现有文件到备份文件夹,然后将来源复制到目的地。
以下是我到目前为止尝试过的脚本。
SCRIPT1:
我能够列出相同但无法将这些数组元素复制到备份位置的文件:
#Declare Source and Destination
$source = Get-ChildItem -Recurse -path \\server1\\e$\ps\src\
$dest = Get-ChildItem -Recurse -path \\server2\\e$\ps\dest\
#lists only objects which are equal and assign to variable
$files=compare-Object -DifferenceObject $source -ReferenceObject $dest -IncludeEqual -ExcludeDifferent
$array = @($files)
$len=$array.length
for ($i=0; $i -lt $array.length; $i++)
{
$array[$i]
}
SCRIPT2:
作为script1我遇到了问题我用这个脚本尝试了一个愚蠢的逻辑,但我觉得这也有太多的手工工作:(请帮助我。
Function cpytest ($s, $d)
{
Copy-Item -Path $s -Destination $d;
}
$n = Read-Host "Enter no of files to be uploaded"
$b = Read-Host "Enter Backup Location for file backups"
for ($i=0;$i -lt $n;$i++)
{
$s = Read-Host "Enter Source with complete file name"
$d = Read-Host "Enter Destination with file name too"
$r = Test-Path $d
If ($r -eq "True")
{
cpytest $d $b
cpytest $s $d
}
Else
{
cpytest $s $d
}
}
答案 0 :(得分:0)
尝试这样的事情:
Function BackupAndMoveFile($filePath, $backupPath, $deployPath) {
$fileName = Split-Path $filePath -Leaf
$deployFile = Join-Path $deployPath $fileName
if ((Test-Path $deployFile)) {
$backupFile = Join-Path $backupPath $fileName
Move-Item $deployFile $backupFile -Force
if (!(Test-Path $backupFile)) {
Write-Warning "Can't backup $fileName to $backupFile"
return $false
}
}
Copy-Item $filePath $deployPath -Force
if (!(Test-Path $deployPath)) {
Write-Warning "Can't deploy $fileName to $deployPath"
return $false
}
return $true
}
BackupAndMoveFile 'C:\temp\backup-test.txt' `
'C:\temp\backup' `
'C:\temp\deploy'
它将覆盖备份目录中的任何内容,因此您可能希望修改以添加时间戳。