使用PowerShell中的WinSCP检索在过去一小时内修改的文件

时间:2016-05-03 15:12:39

标签: powershell winscp winscp-net

我正在使用PowerShell脚本从远程目录中检索文件。我只想检索一个文件,如果它在过去一小时内被修改过。我能够使用以下代码获取最新文件:

$directoryInfo = $session.ListDirectory($remotePath) 

$latest = 
    $directoryInfo.Files | 
    Where-Object { -Not $_.IsDirectory } | 
    Sort-Object LastWriteTime -Descending | 
    Select-Object -First 1 

我相信我需要为Where-Object子句添加另一个条件,但我不知道正确的格式。例如,

    Where-Object { -Not $_.IsDirectory and <created/modified within the last hour> } 

我该怎么做?有更好/更简单的方法吗?

2 个答案:

答案 0 :(得分:1)

扩展您当前where - 阻止以检查LastWriteTime是否比表示前一小时的datetime - 对象更新(更新)。例如:

$lasthour = (Get-Date).AddHours(-1)

$directoryInfo = $session.ListDirectory($remotePath) 

$latest = $directoryInfo.Files | 
Where-Object { (-Not $_.IsDirectory) -and ($_.LastWriteTime -gt $lasthour) } | 
Sort-Object LastWriteTime -Descending |
Select-Object -First 1 

答案 1 :(得分:0)

如果要下载过去一小时内创建/修改的所有文件,请使用:

$directoryInfo = $session.ListDirectory($remotePath) 

$limit = (Get-Date).AddHours(-1)

$recentFiles = 
    $directoryInfo.Files | 
    Where-Object { (-Not $_.IsDirectory) -And ($_.LastWriteTime -Gt $limit) }

foreach ($fileInfo in $recentFiles)
{
    $sourcePath = [WinSCP.RemotePath]::EscapeFileMask($fileInfo.FullName)
    $session.GetFiles($sourcePath, $localPath + "\*").Check()
}

一些官方WinSCP .NET assembly examples用于制作代码: