PowerShell脚本求助:创建日期命名网络共享文件夹并复制日志
完整PowerShell脚本实现日志备份
# 定义网络共享路径和目标文件夹名称(当日日期,格式如yyyy-MM-dd) $networkSharePath = "\\FileServer\LogBackup" $dateFolderName = Get-Date -Format "yyyy-MM-dd" $targetFolder = Join-Path -Path $networkSharePath -ChildPath $dateFolderName # 创建目标文件夹(不存在则创建) if (-not (Test-Path -Path $targetFolder)) { New-Item -Path $targetFolder -ItemType Directory | Out-Null } # 1. 导出Server A的应用程序事件日志到目标文件夹 $appLogFileName = "ServerA_ApplicationLog_$dateFolderName.evtx" $appLogTargetPath = Join-Path -Path $targetFolder -ChildPath $appLogFileName Get-WinEvent -ComputerName "ServerA" -LogName Application -ErrorAction Stop | Export-WinEvent -Path $appLogTargetPath -ErrorAction Stop # 2. 复制Server A的当前IIS日志到目标文件夹 # 替换为你的IIS日志实际UNC路径,默认示例指向W3SVC1站点日志 $iisSourceLogs = "\\ServerA\c$\inetpub\logs\LogFiles\W3SVC1\*.log" # 可选:仅复制当日生成的IIS日志 $today = (Get-Date).Date Get-ChildItem -Path $iisSourceLogs | Where-Object { $_.LastWriteTime -ge $today } | Copy-Item -Destination $targetFolder -Force -ErrorAction Stop Write-Host "日志备份完成,目标路径:$targetFolder"
关键细节说明
- 路径整合:用
Join-Path拼接网络共享路径和日期文件夹,确保所有备份操作都指向同一个目标目录,避免手动拼接路径的错误 - 事件日志处理:Windows事件日志无法直接复制源文件,必须通过
Export-WinEvent导出为标准evtx格式,同时指定-ComputerName从Server A远程拉取日志 - IIS日志筛选:如果只需要当日的IIS日志,通过
Get-ChildItem结合Where-Object筛选出最后写入时间为当日的日志文件,再执行复制 - 权限要求:运行脚本的账号需具备:
- Server A的事件日志读取权限
- Server A上IIS日志目录的读取权限
- 网络共享目录的写入权限
内容的提问来源于stack exchange,提问作者tonyps
相关产品推荐
相关产品推荐

