I am trying to copy log files from source to destination with timestamp. If there are any logs generated in last 1 hour below script will copy the file to distention with (source folder_current Date) in destination path. The script works fine, but I need to know if there are no logs created in last 1 hour. If so, the script should create a file stating no logs for last 1 hour or it should not create folder in destination path.
$ScriptStart = Get-Date
$PreviousTime = $ScriptStart.AddHours(-1)
$source = 'c:\SOURCE\logfiles'
$dest = 'D:\dest\log'
gci $source -Recurse -File |
? {$_.LastWriteTime -lt $ScriptStart -and $_.LastWriteTime -gt $PreviousTime} |
Copy-Item -Destination $dest\logfoldername
Separate filter from action:
$filesToCopy = Get-ChildItem $source -Recurse -File |
Where-Object {
$_.LastWriteTime -lt $ScriptStart -and
$_.LastWriteTime -gt $PreviousTime
}
if ($filesToCopy) {
$filesToCopy | Copy-Item -Destination $dest\logfoldername
} else {
'no files to copy' | Set-Content 'C:\path\to\nofile.txt'
}