使用 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> }
我该怎么做?有 better/simpler 方法吗?
扩展您当前的 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
如果您想下载最近一小时内 created/modified 的所有文件,请使用:
$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用来制作代码:
我正在使用 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> }
我该怎么做?有 better/simpler 方法吗?
扩展您当前的 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
如果您想下载最近一小时内 created/modified 的所有文件,请使用:
$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用来制作代码: