Testing Timestamps of Files Across a Slow Network
I’m not sure if this is because of network lag, or the fact that my lab is on a different AD domain (and different NTP clock) than my local computer. All I know is:
(Get-Item local\path\to\OriginalFile.txt).LastWriteTime –eq (Get-Item remote\path\to\CopyOfFile.txt).LastWriteTime
Does not work reliably. My solution is to arbitrarily rule that if the timestamps are within 5 seconds, they’re good enough. (Given that these files are manually updated, and I want to know if the files were recently updated or not, 5 seconds is fine.)
function Test-DateTimeWithinInterval
{
<#
.SYNOPSIS
Test if two timestamps are within the specified interval
.DESCRIPTION
Because file LastWriteTime DateTime values are stored to the millisecond, a copy of a file may not have the same value as the original. This allows for a "plus-or-minus" range, default of 5 seconds.
.PARAMETER ReferenceObject
First Datetime
.PARAMETER DifferenceObject
Second Datetime
.PARAMETER Interval
Timespan (measured in seconds) the two DateTime parameters must be within, absolute value, to return true.
#>
param (
[DateTime]$ReferenceObject,
[DateTime]$DifferenceObject,
[Int]$Interval = 5
);
[Math]::Abs(($ReferenceObject - $DifferenceObject).TotalSeconds) -le $Interval;
} # function Test-DateTimeWithinInterval
This is more of an exercise in using [Math]::Abs()
than anything else.