Скопируйте и вставьте последние измененные файлы журнала с одного сервера на другой (серверы находятся в разных доменах). - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь написать сценарий, который копирует последний измененный файл журнала с одного сервера на другой сервер (серверы находятся в разных доменах), при копировании которого необходимо проверить учетные данные и затем выполнить сценарий.

Пожалуйста, дайте мне знать, если сценарий правильный или какие-либо исправления должны быть сделаны.

$sourcePath = 'sourcepath' 
$destPath = 'Destinationpath' 
$compareDate = (Get-Date).AddDays(-1); 
$LastFileCaptured = Get-ChildItem -Path $sourcePath |
                    where {$_.Extension.EndsWith('.log') -and $_.LastWriteTime -gt $compareDate } |
                    Sort LastAccessTime -Descending |
                    select -First 1 |
                    select -ExcludeProperty Name, LastAccessTime
Write-Host $LastFileCaptured.Name  
$LastFileCaptured.LastAccessTime
$LastFileCaptured = Get-ChildItem -Recurse |
                    Where-Object{$_.LastWriteTime.AddDays(-1) -gt (Get-Date)}
Write-Host $LastFileCaptured
Get-ChildItem $sourcePath -Recurse -Include '.log' | Where-Object {
    $_.LastWriteTime.AddDays(-1).ToString("yyyy/MM/dd") -gt (get-date).ToString("yyyy/mm/dd")
} | ForEach-Object {
    $destDir = Split-Path ($_.FullName -replace [regex]::Escape($sourcePath), $destPath)
    if (!(Test-Path $destDir)) {
        New-Item -ItemType directory $destDir | Out-Null
    }
    Copy-Item $_ -Destination $destDir
}

1 Ответ

0 голосов
/ 18 марта 2019

«Правильность» вашего сценария легко определяется путем его запуска!Но, хотя это и не прямой ответ, я бы предложил robocopy для этой задачи.

В частности обратите внимание на следующие параметры:

  • / mon: Мониторыисточник и снова запускается при обнаружении более чем N изменений.
  • / maxage: указывает максимальный возраст файла (исключая файлы старше N дней или даты).
...