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

使用PowerShell迁移CSV文件至外部服务器遇未复制提示问题求助

问题排查与解决

核心问题分析

你的代码执行后全走「Not copying」的原因是时间范围逻辑完全错误,同时还有两处不符合需求的细节:

  1. 时间条件矛盾:
    • 你写的$EarliestModifiedTime = (Get-Date).AddMinutes(200).Date会得到「当前日期的0点」(因为.Date会截断时间部分到00:00:00),$LatestModifiedTime = (Get-Date).Date同样是「当前日期的0点」。
    • 条件($_.CreationTime -ge $EarliestModifiedTime) -and ($_.CreationTime -lt $LatestModifiedTime)永远无法成立——没有任何时间能同时大于等于某个值且小于同一个值。
    • 另外注释标注的是“adds 30 min”,但代码里写的是AddMinutes(200),明显是笔误。
  2. 未过滤.csv文件:你用Get-ChildItem "C:\s1\*.*"会遍历所有类型文件,不符合迁移.csv的需求。
  3. 外部服务器路径问题:如果目标是外部服务器,不能用本地C盘路径,需要改用UNC格式(比如\\RemoteServerName\SharedFolder\d1\)。

修正后的代码

根据你注释里提到的「all day yesterday」(迁移昨天全天创建的.csv文件),修正后的代码如下:

$DestinationFolder = "\\RemoteServer\SharedFolder\d1\" # 替换为实际外部服务器UNC路径
$SourceFolder = "C:\s1\"

# 确保目标目录存在
If (-not (Test-Path $DestinationFolder)) {
  New-Item -ItemType Directory -Force -Path $DestinationFolder | Out-Null
}

# 定义时间范围:昨天0点 到 今天0点(即昨天全天)
$YesterdayStart = (Get-Date).Date.AddDays(-1)
$TodayStart = (Get-Date).Date

# 仅遍历源目录下的.csv文件
Get-ChildItem -Path $SourceFolder -Filter "*.csv" | ForEach-Object {
    if ($_.CreationTime -ge $YesterdayStart -and $_.CreationTime -lt $TodayStart) {
        Copy-Item -Path $_.FullName -Destination $DestinationFolder -Force
        Write-Host "Copied $($_.Name)"
    }
    else {
        Write-Host "Not copying $($_.Name) - 创建时间不在目标范围内"
    }
}

如果你的实际需求是迁移最近30分钟内创建的.csv文件(对应你注释里的“adds 30 min”),只需修改时间部分:

# 定义时间范围:当前时间往前推30分钟
$EarliestTime = (Get-Date).AddMinutes(-30)

Get-ChildItem -Path $SourceFolder -Filter "*.csv" | ForEach-Object {
    if ($_.CreationTime -ge $EarliestTime) {
        Copy-Item -Path $_.FullName -Destination $DestinationFolder -Force
        Write-Host "Copied $($_.Name)"
    }
    else {
        Write-Host "Not copying $($_.Name) - 创建时间超过30分钟"
    }
}

关键修改点说明

  • 用-Filter "*.csv"精准筛选.csv文件,比*.*更高效。
  • 修正时间范围逻辑,确保条件能正确匹配目标文件。
  • 外部服务器目标路径改用UNC格式(\\服务器名\共享目录\),需确保当前用户有该共享目录的读写权限。
  • 使用$_.FullName作为Copy-Item的路径,避免相对路径可能导致的问题。
  • 添加| Out-Null抑制New-Item的输出,让控制台更整洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:30:42