CreationTime генерирует неверную дату - PullRequest
0 голосов
/ 06 февраля 2019

Я проверяю, был ли файл создан недавно, используя следующий скрипт:

$today = (Get-Date).Date
$file = Get-ChildItem -Filter *.csv | where { $_.CreationTime.Date -eq $today}

if ($fileCreated) {
    Write-Host "`r`n << $file >> generated in [ $((Get-Location).Path) ]"
} else {
    Write-Host "`r`n file NOT generated!"
}

Это работало вчера безупречно.

По какой-то причине $file.CreationTime выводит каждый раз

CreationTime

, даже если файл создается при использовании $todayНапример,

today

Если я проверю это:

$file = Get-ChildItem -Filter *.csv
Write-Host ($file.CreationTime.ToString('M/d/yyyy hh:mm:ss tt'))
Write-Host "$file generated in [ $((Get-Location).Path) ]"

Я верну файл и в правильном месте, поэтомуЯ точно знаю, что файл правильно найден.однако теперь время создания так или иначе всегда остается таким после того, как я добавил ToString.

CreationTimeToString

Я не понимаю, как это возможно, что вчераСкрипт работал безупречно, и теперь он неожиданно перестает работать так, как задумано ... и что Ican сделать, чтобы получить правильный CreationTime для соответствия $today?

1 Ответ

0 голосов
/ 06 февраля 2019

Причина, по которой это происходило, заключалась в том, что CreationTime - это время создания файла.Однако, поскольку файл не воссоздается, другими словами, он просто изменялся каждый раз, когда мой скрипт предположительно генерирует файл csv, время создания, конечно, НЕ изменится.

Более подходящим методом для использования, согласно предложению @ Lee_Dailey, является свойство LastWriteTime.

$file = Get-ChildItem -Filter *.csv | where { $_.LastWriteTime.GetDateTimeFormats()[6] -eq $today}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...