#powershell
Вопрос:
мой первый подход был: gci -File | ? {$_.LastWriteTime -eq "3/25/2021"}
но это ничего не возвращает
и наоборот, с -gt
-lt
операторами и, похоже, это работает
gci | ? {$_.LastWriteTime -gt "3/24/2021" -and $_.LastWriteTime -lt "3/26/2021"}
Directory: C:logs
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 24/3/2021 7:42 PM 1048804 fdm.1
-a--- 24/3/2021 7:45 AM 1048617 hostd-probe.1
-a--- 25/3/2021 10:27 AM 24246 usb.log
Я ищу список файлов на определенную LastWriteAccess
дату. Я не использовал .addDays()
метод, потому что я буду периодически проверять одни и те же файлы в определенные даты, поэтому было бы удобнее использовать статическую дату вместо изменения .addDays()
значения
Комментарии:
1. Добро пожаловать @mich_a! Могу ли я предложить избегать псевдонима при отправке вопросов? Хотя псевдонимы являются хорошим ярлыком, они, как правило, затрудняют чтение и отладку. Что касается вашего вопроса, проблема заключается в том, что вы используете «3/26/2021», который является строкой в PowerShell. Вы должны использовать (get-дата 3/23/2021), который возвращает объект даты и времени.
Ответ №1:
LastWriteTime
это конкретная дата и время. Вы сравниваете равенство только с датой, поэтому вам нужно ссылаться на это свойство
gci -File | ? {$_.LastWriteTime.date -eq "3/25/2021"}
Кроме того, если это сценарий, который будет использоваться другими или в производстве, лучше не использовать псевдонимы.
Get-ChildItem -File |
Where-Object {$_.LastWriteTime.date -eq "3/25/2021"}
Комментарии:
1. спасибо @Doug Mauer. Такое чувство, что это было прямо у меня под носом.:)
2. @mich_a Вы также можете рассмотреть возможность принятия этого в качестве ответа, нажав на галочку. Таким образом, другие читатели смогут легко найти решение.