Powershell: укажите файлы по дням их создания - PullRequest
0 голосов
/ 25 августа 2018

Я хочу выбрать файлы, которые создаются (например) для 9th day в каждом месяце в каталоге.

Я придумал этот код:

dir -Recurse -File | Where-Object {$_.CreationTime.Day -eq "09"} 

Однако, это дает мне каждый файл, созданный каждый день в этом каталоге.

Я не понимаю, почему это не работает. Надеюсь, кто-нибудь может мне помочь!

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

Просто чтобы повторить то, что сказал TheIncorrigle1, это, вероятно, было вызвано некоторой странностью приведения к String "09" и int 9, так как я не мог воспроизвести проблему (ваш оригинальный фрагмент кода работал хорошо для меня).

Get-ChildItem -Recurse -File | Where-Object {$_.CreationTime.Day -eq 9} | Format-List Name,CreationTime,LastAccessTime,LastWriteTime

Вышеприведенное возвращает только результаты для всего, что было создано на 9-й день, и явно перечисляет Name, CreationTime, LastAccessTime, LastWriteTime

PS C:\Testing> Get-ChildItem -Recurse -File | Where-Object {$_.CreationTime.Day -eq 9} | Format-List Name,CreationTime,LastAccessTime,LastWriteTime


Name           : csv.txt
CreationTime   : 09/07/2018 17:37:13
LastAccessTime : 09/07/2018 17:37:13
LastWriteTime  : 23/07/2018 22:41:36
0 голосов
/ 25 августа 2018

I подозреваю это из-за вашего оператора сравнения (хотя я не мог воспроизвести вашу проблему в первую очередь).Поскольку свойство Day является целым числом, вы должны сравнивать его с подобными типами:

Get-ChildItem -File -Recurse |
    Where-Object { $PSItem.CreationTime.Day -eq 9 }

В противном случае вы можете использовать систему приведения типов для правильного сравнения строки и целого числа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...