簡體   English   中英

使用 PowerShell 中的 WinSCP 檢索過去一小時內修改的文件

[英]Using WinSCP from PowerShell to retrieve files modified within the last hour

我正在使用 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> } 

我該怎么做呢? 有沒有更好/更簡單的方法?

擴展您當前的where LastWriteTime以檢查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 

如果要下載過去一小時內創建/修改的所有文件,請使用:

$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 程序集示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM