Проверьте, поступил ли файл за определенный промежуток времени, используя powershell - PullRequest
0 голосов
/ 19 ноября 2018

Я хочу проверить, обновлялся ли файл в определенный промежуток времени, например с 9:00 до 23:00. Если true, выведите «Файл прибыл», если нет, то напечатайте «НЕТ обновлено», используя powershell.

я попробовал вот что:

$file="F:\akku.txt"    
$a=(Get-Item $file).LastWriteTime    
$b= $a.ToShortTimeString()    
$startTime= Get-Date "09:00 PM"     
$endTime=Get-Date "11:00 PM"    
$b    
$startTime -gt $b     
$endTime -lt $b    
if(  $b -gt $startTime.TimeOfDay  -and $b -lt $endTime.TimeOfDay )
{
    Write-Host "Replication received"
} else{
    Write-Host "Replication not received"
}

Пожалуйста, дайте мне знать, если есть какой-то другой способ обнаружения файла

Ответы [ 3 ]

0 голосов
/ 19 ноября 2018

это немного другой подход. он проверяет время суток, чтобы определить, находится ли он в нужном диапазоне, используя стандартный диапазон номеров.

это также предполагает, что вы действительно хотите, чтобы даты были вчера , поскольку тестирование на сегодняшний день ДО диапазона измерений не имеет смысла ... и тестирование между 2300 и 2359 кажется довольно маловероятным. [ ухмылка ]

# get date with time set @ midnite
$Yesterday = (Get-Date).AddDays(-1).Date
# 9pm = 2100 hours
$UpdateHourRange = 21..23

# comment out the one you DO NOT want to test with [*grin*]

<#
# create a file with the LastWriteTime set to yesterday @ 2200
$FileName = 'C:\temp\IN_Timespan.txt'
$Null = New-Item -Path $FileName -ItemType File -Force
$TargetFile = Get-Item -LiteralPath $FileName
$TargetFile.LastWriteTime = Get-Date -Day ($Yesterday.Day) -Hour 22 -Minute 00 -Second 00
#>

#<#
# create a file with LastWriteTime set to "now"
$FileName = 'C:\temp\OUT_Timespan.txt'
$Null = New-Item -Path $FileName -ItemType File -Force
#>

#$FileName = "$Env:TEMP\Enable1_WordList_File.txt"
$TargetFile = Get-Item -LiteralPath $FileName

if ($TargetFile.LastWriteTime.Date -eq $Yesterday -and
    $TargetFile.LastWriteTime.Hour -in $UpdateHourRange)
    {
    'Update was in the required timespan.'
    '    LastWriteTime = {0}' -f $TargetFile.LastWriteTime
    '             Hour = {0}' -f $TargetFile.LastWriteTime.Hour
    }
    else
    {
    Write-Warning 'The file was NOT updated in the required timespan.'
    Write-Warning ('    LastWriteTime = {0}' -f $TargetFile.LastWriteTime)
    Write-Warning ('             Hour = {0}' -f $TargetFile.LastWriteTime.Hour)
    }

вывод для файла "сейчас" ...

WARNING: The file was NOT updated in the required timespan.
WARNING:     LastWriteTime = 2018-11-18 3:50:19 PM
WARNING:              Hour = 15
0 голосов
/ 19 ноября 2018

Проще лучше?

$status = "NotFound " ; gci foo.txt | ? { $_.LastWriteTime.Hour -ge 21 -and $_.LastWriteTime.Hour -lt 23 } | select -First 1 | % { $Status = "Found"}
Write-Host $Status

Фактический диапазон времени:

$end = Get-Date -Year 2019 -Month 1 -Day 1 -Hour 0 -Minute 0 -Second 0 -Millisecond 0
$start = Get-Date -Year 2018 -Month 1 -Day 1 -Hour 0 -Minute 0 -Second 0 -Millisecond 0
gci foo.txt | ? { $_.LastWriteTime -ge $start -and $_.LastWriteTime -le $end }

Любой может быть параметризован в сценарий.

Если ваш файл может не существовать, вы можете добавить попробовать / поймать это, но ваш пример не включил его. Я предполагаю, что вы упростили для публикации.

0 голосов
/ 19 ноября 2018

Несколько вещей с вашим текущим кодом.

$b и следующие две строки бесполезны, не знаете, что вы там делали.

Вам не нужно короткое времяstring как PowerShell будет обрабатывать их как DateTime объект, чтобы вы могли использовать все время.EG Monday, 19 November 2018 7:53:48 AM.Таким образом, нет необходимости в .TimeOfDay.

$File = "F:\akku.txt"
$GetFile = (Get-Item $file).LastWriteTime
$StartTime = Get-Date "09:00 PM"
$EndTime = Get-Date "11:00 PM"
if($GetFile -gt $StartTime -and $GetFile -lt $EndTime){
    Write-Host "Replication received"
}else{
    Write-Host "Replication not received"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...