Вместо того, чтобы делать
$file = New-object System.IO.FileInfo $usersFileName
Вы можете просто сделать
$file = get-item $usersFileName
Тогда вы все равно можете сделать $file.LastWriteTime
и получить подходящее время.
Я думаю, что создание FileInfo
объекта самостоятельно не работает, потому что PsDrive может быть неизвестен методу .Net, и, несмотря на то, что именно это возвращает Get-Item
, он может обрабатывать его внутренне. Обратите внимание, что создание объекта самостоятельно с помощью общего ресурса дает правильное время, поэтому проблема связана не с общим ресурсом, а с PsDrive.
Кроме того, вам не нужно создавать объекты снова и снова, а затем проверять FileInfo. Вы можете просто вызвать метод Refresh
. Это то же самое с Get-Item
. Вы можете просто позвонить Refresh
, чтобы узнать обновленное время.
И, между прочим, вы, кажется, наблюдаете за изменениями в файле и регистрируете его. .Net и Powershell (посредством событий и т. Д.) Имеют отличную поддержку для таких вещей. Посмотрите на FileSystemWatcher (http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx)