I have this script to collect logs file between two dates. Normally I have logs created for everyday on remote machine but is there any possibility to show what file exist or not?
For example If I try to download file between two dates 25.06 - 30.06 and on remote machine doesn't exist log from 28.06 print in console.
25.06,26.06,27.06,29.06,30.06 log downloaded successfully
[!] warning 28.06 log doesn't exist on remote machine!
# Set up session options
$options = @{
Protocol = [WinSCP.Protocol]::Sftp
HostName = $entry.IP
UserName = $User
Password = $Password
GiveUpSecurityAndAcceptAnySshHostKey = $true
}
try {
# Set up session options using first password
$sessionOptions = New-Object WinSCP.SessionOptions -Property $options
$session = New-Object WinSCP.Session
# Try Connect
$session.Open($sessionOptions)
}
catch {
# Set up session options using second settings
$options['HostName'] = $vpnIP
$options['UserName'] = $User
$options['Password'] = $Password
try {
$sessionOptions = New-Object WinSCP.SessionOptions -Property $options
$session = New-Object WinSCP.Session
# Try Connect
$session.Open($sessionOptions)
}
catch {
Write-Error "Could not open WinSCP session: $($_.Exception.Message)"
throw
}
}
# Date 1 START
do {
$date = $null
$today = Read-Host -Prompt ('Enter START date (inclusive) (e.g. {0}) [yyyy.MM.dd]' -f (Get-Date -Format "yyyy.MM.dd"))
try {
$date = Get-Date -Date $today -Format "yyyy-MM-dd" -ErrorAction Stop
'[OK] {0} Valid date - OK!' -f $date
}
catch {
'[X] {0} Invalid date!' -f $today
}
}
until ($date)
# Date 2 STOP
do {
$date1 = $null
Write-Host "Add +1 day" -ForegroundColor Red
$today1 = Read-Host -Prompt ('Enter END date (exclusive) (e.g. {0}) [yyyy.MM.dd]' -f (Get-Date -Format "yyyy.MM.dd"))
try {
$date1 = Get-Date -Date $today1 -Format "yyyy-MM-dd" -ErrorAction Stop
'[OK] {0} Valid date - OK!' -f $date1
}
catch {
'[X] {0} Invalid date!' -f $today1
}
}
until ($date1)
# ----- Date END
$session = New-Object WinSCP.Session
$file = "*.log"
$localPath = "\temp_files"
$remotePath = "/C:/log", "/C:/Back_up"
try {
# Connect
$session.Open($sessionOptions)
# Check exists folder
foreach ($remotePath in $remotePath)
{
if ($session.FileExists($remotePath))
{
Write-Host "[OK] Folder '$remotePath' exist" -ForegroundColor Green
# Transfer file
Write-Host "[i] '$date' - '$date1' > '$inputID' downloading..." -ForegroundColor Cyan
$session.GetFilesToDirectory($remotePath, $localPath, "*.log>=$date<=$date1").Check();
}
else
{
Write-Host "[X] INFO: Folder: '$remotePath' doesn't exist" -ForegroundColor Red
}
}
}
finally {
$session.Dispose()
}
Thank you.