2016-05-03 6 views
1

私はPowerShellスクリプトを使用してリモートディレクトリからファイルを取得しています。私は最後の1時間以内に修正されたファイルのみを検索したい。私はWhere-Object句に別の条件を追加する必要がありますが、私は適切な形式を知っていないと信じていPowerShellのWinSCPを使用して直前に修正されたファイルを取得する

$directoryInfo = $session.ListDirectory($remotePath) 

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

:私は、次のコードを使用して最新のファイルを取得することができました。たとえば、

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

どうすればよいですか?より良い/より簡単な方法がありますか?

答えて

1

whereブロックを延長して、LastWriteTimeが前の1時間を表す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 
+0

+1、OPが実際に 'Sort-Object LastWriteTime -Descending | Select-Object - First 1'パーツ。私は、最新のファイルだけでなくすべての最近のファイルをダウンロードすることを意図しています。 –

+0

ええ、それは問題ではありませんでした。私は最初にそれらを削除しましたが、私は彼が何をしたいのかわからないので、私は彼が行方不明だったものを修正するためにそれらを追加しました。 :-) –

+0

タイトルは「*過去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

+0

私の質問と話題はお互いにある程度相違していることがわかりました。混乱のために私の謝罪。ここに背景があります: – Doug

+0

背景:午後5時20分ごろ、毎週ソースフォルダに1つのファイルを配置するプロセスがあります。私はそのファイルを取得し、名前を変更して別のサーバに置く必要があります。スクリプトは平日に実行されるようにスケジュールされています。私の元のコードは、ファイルが作成されていないFederal Holidaysを除いて正常に機能しました。その結果、前日のファイルは再処理されます。したがって、最新のファイルを取得するのではなく、直近の1時間以内にファイルを変更するだけに変更しました。 – Doug

+0

Frode F.の溶液は所望通りに作用した。すべての助けをありがとう! – Doug

関連する問題