это немного другой подход. он проверяет время суток, чтобы определить, находится ли он в нужном диапазоне, используя стандартный диапазон номеров.
это также предполагает, что вы действительно хотите, чтобы даты были вчера , поскольку тестирование на сегодняшний день ДО диапазона измерений не имеет смысла ... и тестирование между 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