首页 > 解决方案 > 将最新修改的日志文件从一台服务器复制并粘贴到另一台服务器(服务器位于不同的域中)

问题描述

我正在尝试编写一个脚本,将最新修改的日志文件从一台服务器复制到另一台服务器(服务器位于不同的域中),同时复制它应该检查凭据然后执行脚本。

请让我知道脚本是否正确或需要进行任何更正。

$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
}

标签: windowspowershellscriptingcopy-paste

解决方案


您的脚本的“正确性”很容易通过运行它来确定!但是,虽然这不是一个直接的答案,但我建议使用robocopy来完成这项任务。

特别注意这些选项:

  • /mon:监视源,当检测到超过 N 的更改时再次运行。
  • /maxage:指定最大文件年龄(排除超过 N 天或日期的文件)。

推荐阅读