rox33
06-12-2012, 12:05
Добрый день, уважаемые!
Веду неравную борьбу с ведением лога при синхронизации папок
Вот скрипт, взял с интернета, доработал чуть-чуть под себя.
function FolderMirror {
param ($source, $dest)
#Сравнение, копирование
$comparedirs = Compare-Object (gci $source) (gci $dest)
if ($comparedirs | Where-Object {$_.SideIndicator -eq ‘<=’}) {
$comparedirs | Where-Object {$_.SideIndicator -eq ‘<=’} | ForEach-Object{Write-Host "Копирую"($_.InputObject).FullName "в" $dest (Get-Date)
Copy-Item ($_.InputObject).FullName -Destination $dest;Write-Output "Копирую"($_.InputObject).FullName "в" $dest (Get-Date) | out-file "c:\result.txt"}
} else {
Write-Host "Нечего копировать. Каталоги одинаковы"
}
#Создание директорий из источника
$files = Get-ChildItem $source
foreach ($file in $files) {
if($file.mode -match “d”) {
write-host "Folder – " $file
if (Test-Path $dest\$file) {
} else {
New-Item $dest\$file -ItemType Directory
}
FolderMirror "$source\$file" "$dest\$file"
} else {
}
}
}
$source = "d:\BCKP_TEST"
$dest = "d:\ttt"
$files = Get-ChildItem $source
foreach ($file in $files) {
if($file.mode -match “d”) {
write-host "Folder – " $file
if (Test-Path $dest\$file) {
} else {
New-Item $dest\$file -ItemType Directory
}
Write-Host "$source\$file" "$dest\$file"
FolderMirror "$source\$file" "$dest\$file"
} else {
FolderMirror $source $dest
}
}
Всё работает хорошо, но лог, собака, пишет только последнюю операцию.
Как заставить его писать всё, что сделано за операцию?
И, в идеале, ДОзаписывать лог после каждого выполнения.
Заранее огромное спасибо за помощь!
Веду неравную борьбу с ведением лога при синхронизации папок
Вот скрипт, взял с интернета, доработал чуть-чуть под себя.
function FolderMirror {
param ($source, $dest)
#Сравнение, копирование
$comparedirs = Compare-Object (gci $source) (gci $dest)
if ($comparedirs | Where-Object {$_.SideIndicator -eq ‘<=’}) {
$comparedirs | Where-Object {$_.SideIndicator -eq ‘<=’} | ForEach-Object{Write-Host "Копирую"($_.InputObject).FullName "в" $dest (Get-Date)
Copy-Item ($_.InputObject).FullName -Destination $dest;Write-Output "Копирую"($_.InputObject).FullName "в" $dest (Get-Date) | out-file "c:\result.txt"}
} else {
Write-Host "Нечего копировать. Каталоги одинаковы"
}
#Создание директорий из источника
$files = Get-ChildItem $source
foreach ($file in $files) {
if($file.mode -match “d”) {
write-host "Folder – " $file
if (Test-Path $dest\$file) {
} else {
New-Item $dest\$file -ItemType Directory
}
FolderMirror "$source\$file" "$dest\$file"
} else {
}
}
}
$source = "d:\BCKP_TEST"
$dest = "d:\ttt"
$files = Get-ChildItem $source
foreach ($file in $files) {
if($file.mode -match “d”) {
write-host "Folder – " $file
if (Test-Path $dest\$file) {
} else {
New-Item $dest\$file -ItemType Directory
}
Write-Host "$source\$file" "$dest\$file"
FolderMirror "$source\$file" "$dest\$file"
} else {
FolderMirror $source $dest
}
}
Всё работает хорошо, но лог, собака, пишет только последнюю операцию.
Как заставить его писать всё, что сделано за операцию?
И, в идеале, ДОзаписывать лог после каждого выполнения.
Заранее огромное спасибо за помощь!