Powershell getchild-item к определенной дате - PullRequest
2 голосов
/ 30 ноября 2011

Я пытаюсь найти файлы с предыдущего дня для копирования, но мой простой get-childitem не работает. Он работает с любым другим параметром, кроме -eq. Любые предложения по списку файлов только за предыдущий день?

get-childitem c: \ users | where-object {$ _. LastWriteTime -eq (get-date) .adddays (-2)}

Ответы [ 2 ]

2 голосов
/ 30 ноября 2011

Вы ищете файлы, которые записаны в точное время (часы, минуты, секунды, год, месяц и 2 дня назад). Если файлы не были записаны во второй, два (или один) дня назад, вы не найдете их. Другими словами, вы сравнивали полные DateTime объекты, а не просто дату, и, следовательно, вероятность того, что они были в точности равны, очень мала, что, по-видимому, указывает на то, что -eq не работает, но другие сравнения работают.

Вы, вероятно, хотели просто сравнить даты без времени:

$yesterday = (get-date).AddDays(-1).Date
gci c:\users | ?{ $_.LastWriteTime.Date -eq $yesterday}

(также перенес дату получения вовне, так как вы, вероятно, не хотите делать это снова и снова.)

1 голос
/ 30 ноября 2011

Они не равны , потому что они отличаются во времени. Если вы хотите точное совпадение даты, используйте свойство Date:

get-childitem c:\users| where-object {$_.LastWriteTime.Date -eq (get-date).adddays(-2).Date}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...