Проверяем дату на различные условия с помощью PowerShell

Несколько недель назад, мой друг Rich Mawdsley задал вопрос в нашей Slack-команде Windows-администраторов: как определить, что сегодня именно второй вторник месяца? Обнаружилось, что в PowerShell нет встроенного метода для ответа на такой вопрос. Вот почему, сегодня я представляю вам функцию, предназначение которой — проверять дату на определённые условия. Функция определяет:

  • Является ли дата днём недели определённого номера в этом месяце: Например, 4-й понедельник, второй вторник, последнее воскресенье и т.п.
  • Входит ли дата в определённый квартал.
  • Является ли заданная дата началом или концом квартала.
  • Последний ли это день месяца и т.д.

Возвращает функция всего лишь булево значение: $true, если дата удовлетворяет заданным условиям, $false если не удовлетворяет. Больше никаких данных о переданной ей дате функция не рассказывает.

Ниже представлен сам код, а его последнюю версию вы всегда можете найти на моём GitHub:

Функция покрыта тестами (результаты вы можете посмотреть здесь), но не полностью — в будущем я определённо улучшу их. И да, тесты работают — они помогли мне найти несколько ошибок 😉

Кстати, если вы никогда раньше не писали тесты для PowerShell, самое время начать: вот это Введение в тестирование с помощью Pester Jakub Jares`а очень поможет вам — вы начнёте писать тесты ещё до окончания лекции.