有人可以帮助 Powershell 脚本复制带有最后 24 小时时间戳的日志文件吗

Can some one help in Powershell script to copy log files with last 24 hour time stamp

我们有一堆服务器,我们需要从每个服务器的多个文件夹中复制日志文件,并转储到具有各自服务器名称的文件夹中, 我们需要这些文件夹中最近 24 小时的时间戳日志。我们需要把它放在计划任务中。

过去 24 小时 windows 来自事件查看器的日志,应用程序日志,安全日志,系统日志

提前感谢您的帮助。

代码如下:

$ScriptStart = Get-Date
$PreviousTime = $ScriptStart.AddHours(-24)
$source = '\Servername\Temp\test'
$destination = '\Servername\Temp'
gci $source -Recurse -File | ? {
  $_.LastWriteTime -lt $ScriptStart -and
  $_.LastWriteTime -gt $PreviousTime
} | Copy-Item -Destination $destination
$temp = Get-EventLog -LogName Application -After $PreviousTime -Before $ScriptStart -ComputerName servername
$temp | select EventID, MachineName, message |
  Export-Csv '\Servername\Temp\event1.csv'

我需要它在服务器列表中 运行,具有不同的文件夹。那就是我被困的地方。

如果我没看错你的问题,把你的代码改成这样就足够了:

...
$servers = 'server_a', 'server_b', 'server_c', ...

foreach ($server in $servers) {
  $source = "\$server\Temp\test"
  $destination = "C:\central\folder$server"

  if (-not (Test-Path -LiteralPath $destination)) {
    New-Item -Type Directory -Path $destination | Out-Null
  }

  Get-ChildItem $source -Recurse -File | Where-Object {
    $_.LastWriteTime -lt $ScriptStart -and
    $_.LastWriteTime -gt $PreviousTime
  } | Copy-Item -Destination $destination

  Get-EventLog -LogName Application -After $PreviousTime -Before $ScriptStart -Computer $server |
    Select-Object EventID, MachineName, Message |
    Export-Csv 'C:\path\to\events.csv' -Append -NoType
}

如果每个服务器的源文件夹不同,您可能需要在哈希表中创建服务器名到源文件夹的映射:

$sourcePath = @{
  'server_a' = 'foo\bar'
  'server_b' = 'baz\something'
  ...
}

并改变

$source = "\$server\Temp\test"

$source = '\{0}\{1}' -f $server, $sourcPath[$server]