Текущая дата и дата изменения папки Powershell - PullRequest
1 голос
/ 08 ноября 2019

В поисках способа проверить текущую дату и дату последнего изменения определенных папок по установленной дате окончания.

Ниже приведена проверка текущей даты по дате начала и окончания:

if ($today -ge $startdate -and $today -le $enddate) {
    Write-Output "Run script"
}else{
    Write-Output "Date out of range"
}

Мне нужно что-то вроде: «Если текущая дата ИЛИ Дата последнего изменения папки - после« Задать дату », запись истекла» Не удалось выяснить, как их объединить. Пожалуйста, помогите!

РЕДАКТИРОВАТЬ: Пока что придумали это: $Modified = $($(ls 'C:\test.txt').LastWriteTime -gt $enddate); Но вышеупомянутое работает только для файлов, а не папок.

1 Ответ

1 голос
/ 08 ноября 2019

Get-ChildItem CmdLet

ls - это псевдоним для Get-ChildItem cmdLet.

  • Запуск ls (или gci / Get-ChildItem) прифайл дает атрибуты файла, возвращая один элемент.
  • Выполнение ls (или gci / Get-ChildItem) в папке дает атрибуты содержимого папки, возвращая массивиз элементов.

Итак, $(ls C:\temp).LastWriteTime возвращает вывод, подобный этому, список даты и времени для всех элементов в папке:

$(gci c:\temp).LastWriteTime

Tuesday, 1 October 2019 10:23:02 AM
Monday, 4 November 2019 2:06:56 PM
Wednesday, 7 August 2019 2:55:32 PM
Thursday, 10 October 2019 3:42:06 PM
...

, который невозможно осмысленно сравнить с помощью -gt и не относится к LastWriteTime предполагаемой папки.

Get-Item CmdLet

Чтобы убедиться, что вы получаете LastWriteTime для отдельного элемента, будь то файл или папка,используйте вместо этого gi / Get-Item.

Папка

$(gi c:\temp).LastWriteTime

Tuesday, 18 June 2019 9:30:11 AM

Файл

$(gi C:\temp\pinglog.txt).LastWriteTime

Tuesday, 20 August 2019 5:20:06 PM
...