You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell Copy-Item按文件日期复制WSUS更新时如何保留目录结构

问题核心原因
  • 现有代码复制文件时,未计算源文件相对于WSUS内容根目录的相对路径,直接将文件指向导出目录根路径,导致所有文件平铺在根目录,丢失原有层级
  • 逻辑顺序错误:在执行增量备份前就提前获取源目录文件列表,导致备份阶段同步的新增文件完全不会被纳入导出范围
  • 日志启动时机偏晚,未覆盖目录清理、备份阶段的执行记录
  • 未提前在导出路径下创建对应子目录,无法满足“空文件夹也要保留结构”的要求
修正后的实现逻辑

关键调整点

  • 从脚本启动第一行开启全流程日志转录,覆盖清理、备份、导出、错误提示的所有记录
  • 增量备份执行完成后再获取源目录的全量文件列表,确保新增文件全部被识别
  • 遍历每个文件/文件夹时,先计算其相对于WSUS源根目录的相对路径,拼接导出目录的对应目标路径
  • 遍历过程中优先同步创建所有对应子目录,无论目录是否为空
  • 对满足修改时间过滤条件的文件,直接复制到对应的目标子路径下,避免平铺

可直接运行的修正代码

##Set directory locations and variables
$nicedate = Get-Date -UFormat %m-%d-%Y
$source = "C:\temp\WsusContent\"
$bckp = "C:\temp2\WsusContent"
$dest = "C:\temp2\export"
$date = (Get-Date).AddDays(-28)
$log = "C:\temp\wsus_log_$nicedate.txt"

# 开启全流程日志转录,覆盖之前的旧日志
Start-Transcript -Path $log -Append:$false

##Delete all subfolders and Files from destination
Get-ChildItem $dest | Remove-Item -Force -Recurse
Write-Output "CLEANUP:     导出目录清理完成"

# 增量同步WSUS内容到备份目录
try{
    xcopy /E/H/D/C/I/Y $source $bckp
    Write-Output "BACKUP:     WSUS增量备份完成"
}
catch{
    Write-Output "ERROR:     备份失败: $($_.Exception.Message)"
}

# 备份完成后再获取源目录全量列表,确保新增文件被纳入
$items = Get-ChildItem -Recurse $source

## 按原目录结构同步内容到导出目录
foreach($item in $items){
    # 计算当前项相对于源根目录的相对路径
    $relativePath = $item.FullName.Substring($source.TrimEnd('\').Length).TrimStart('\')
    $targetPath = Join-Path -Path $dest -ChildPath $relativePath

    if($item.PSIsContainer){
        # 同步创建所有对应文件夹,空文件夹也会保留
        New-Item -Path $targetPath -ItemType Directory -Force | Out-Null
        continue
    }

    # 按修改时间过滤文件
    if($item.LastWriteTime -gt $date){
        # 提前创建文件所在的子目录
        $targetDir = Split-Path -Path $targetPath -Parent
        if(-not (Test-Path $targetDir)){
            New-Item -Path $targetDir -ItemType Directory -Force | Out-Null
        }
        Copy-Item $item.FullName -Destination $targetPath -Force
        Write-Output "COPY: 已导出文件 $relativePath"
    }
}

# 流程收尾
Write-Output "EXPORT:     增量导出流程执行完成"
Stop-Transcript

运行效果

  • 所有符合时间条件的文件完整保留原有WSUS目录层级,不会平铺在导出目录根下
  • 源目录下的空文件夹会在导出目录下同步创建,满足光盘刻录的结构要求
  • 全流程执行记录、错误信息、单个文件导出明细会自动写入指定日志文件,无遗漏

内容的提问来源于stack exchange,提问作者Justin Lawhorne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 17:54:04