Scripting Games: Advanced PowerShell — Event 4

calendar

На этот раз надо было нарисовать скриптом страничку календаря. Я не стал заморачиваться с определением того с какого дня в системе начинается неделя — просто лень было 🙂 Кстати это не сложно 🙂

(Get-Culture).DateTimeFormat.FirstDayOfWeek

Ну и вот что получилось:

 

SG4-Calendar.ps1

# Запрашиваем месяц в формате месяц/год и присвиваем её переменной в виде # массива, разделив по "/". То есть первый элемент это месяц, второй - год. $Data = (Read-Host "Enter a month") -split "/" # В переменную $FirstDay помещаем первый день месяца. $FirstDay = Get-Date -Year $Data[1] -Month $Data[0] -Day 1 # С помощью функции DaysInMonth класса DateTime, получаем количество дней в # месяце. $TotalDays = [datetime]::DaysInMonth($Data[1],$Data[0]) # Делаем отступ в одну строчку для красоты 🙂 Write-Host "" # Пишем название месяца и год. Write-Host (Get-Date $FirstDay -Format "MMMM yyyy") # Пишем заголовки столбцов. Write-Host "`nSun`tMon`tTue`tWed`tThu`tFri`tSat" # Делаем отступ знаками табуляции ("`t") в количестве равном дню недели первого # дня месяца. Рисуем число 1. Write-Host ("`t"*([int]($FirstDay.DayOfWeek)) + "1`t") -NoNewline # Если первый день месяца является одновременно последним днём недели - то # переходим на новую строку. if ([int]$FirstDay.DayOfWeek -eq 6) {Write-Host ""} # Для каждого числа от 2 до $TotalDays включительно, где $_ - текущее число... 2..$TotalDays | foreach { # ...выводим на экран текущее число и знак табуляции. Write-Host "$_`t" -NoNewline # Если это был последний день недели, то переходим на новую строку. if ([int](get-date $FirstDay -Day $_).DayOfWeek -eq 6) {Write-Host ""} } # Финальный отступ. "`n" - символ новой строки. Write-Host "`n"

sg4

Эх… Надо было еще названия дней недели выводить местные…

(Get-Culture).DateTimeFormat.AbbreviatedDayNames

Как обычно еще варианты: MoW, Per Østergaard, Scripting Guys, Ed Wilson.

Jeffrey Snover застолбил робота :)

powersheller

Этот робот с рекламного сайта Windows 2008 теперь является талисманом («mascot») PowerShell’а 🙂

Осталось придумать ему имя, Джеффри ждет ваших вариантов 🙂

Опубликовано в PowerShell, Windows 2008. Комментарии к записи Jeffrey Snover застолбил робота :) отключены