【问题标题】:Powershell Copy-Item cachingPowershell 复制项缓存
【发布时间】:2014-09-01 09:43:06
【问题描述】:

我在使用以下代码时遇到 Powershell 无法跨服务器复制最新文件的问题。

$dir="\\MyServer\SQLBackups\SQL Backup*.bak"
$FileLocation = "E:\SQLRestore\SQL Backup Latest.bak"

If (Test-Path $FileLocation){
    Remove-Item $FileLocation
}

If (Test-Path $dir){
    $latest = Get-ChildItem -Path $dir | Sort-Object CreationTime -Descending | Select-Object -First 1
    Copy-Item -Path "$latest" -Destination $FileLocation
}

代码应找到带有前缀“SQL Backup”的最新 .bak 文件并将其传输到本地。

这个过程运行了一个多月,服务器或过程都没有变化,突然传输时间从 5 分钟下降到 3 秒,并且正在传输相同的文件。

非常感谢

【问题讨论】:

  • 我们无法测试您的文件,Get-ChildItem -Path $dir | Sort-Object CreationTime -Descending 的输出是什么?是否有人更改了 sql server 上的备份扩展名?

标签: powershell get-childitem copy-item


【解决方案1】:

在您的脚本中添加一些日志记录语句以查看实际发生的情况。像这样,

$logfile = "c:\myLogFile.txt"
If (Test-Path $dir){
    $latest = Get-ChildItem -Path $dir | Sort-Object CreationTime -Descending | Select-Object -First 1
    add-content $logfile "Latest file: is $($latest.FullName)"
    Copy-Item -Path "$latest" -Destination $FileLocation
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    相关资源
    最近更新 更多