Один из моих скриптов посланных на конкурс...
Раздел Advanced PowerShell - Event-4
Может он не так короток как у других - но я уверен, что в итоге получается красивый вид и плюс есть изюминка - выделяются праздники (я тещу свое самолюбие - что до этого догадался только я :).
Самое главное тут было найти дату начиная с которой выводить календарь.
param([String] $DStr)
$CelebDate = "01/01","01/07","02/23","03/08",`
"05/01","05/02","05/09","11/04","12/31"
if ($DStr -eq $null -or $DStr -eq "")
{$D=[DateTime]::Now.Date} else {$D=[DateTime]$DStr}
$Celeb= $CelebDate | % {[DateTime]"$_/$($D.Year)"}
$Last=$false
$DD=$D.AddDays(-$D.Day+1)
$Beg=$DD.AddDays(-[int]$DD.DayOfWeek)
$End=$DD.AddDays([DateTime]::DaysInMonth($D.Year,$D.Month)-1)
$S=("{0:MMMM, yyyy}" -f $D).Length
$C=21/2-$S/2
Write-Host (" "*$C+("{0:MMMM}, " -f $D)) -Fore Blue -No
Write-Host ("{0:yyyy}" -f $D) -Fore Yellow
Write-Host "---------------------" -Fore DarkBlue
Write-Host " Su " -Fore Red -No
Write-Host "Mo Tu We Th Fr " -Fore Cyan -No
Write-Host "Sa" -Fore DarkRed
Write-Host "---------------------" -Fore DarkBlue
$DDD=$Beg
while(!$Last)
{
for($I=0;$I -lt 7;$I++)
{
$Str=$DDD.Day.ToString().PadLeft(3," ")
$Last=$DDD -ge $End
if ($DDD.DayOfWeek -eq 0) {$Color="Red"}
elseif ($DDD.DayOfWeek -eq 6) {$Color="DarkRed"}
else {$Color="White"}
if ($DDD -lt $DD -or $DDD -gt $End) {$Color="Gray"}
if ($Celeb -contains $DDD) {$Color="Magenta"}
if ($DDD -eq $D) {$Color="Green"}
Write-Host $Str -Fore $Color -No
$DDD=$DDD.AddDays(1)
}
""
}
Вот как при этом выглядит календарик в консоли:
Комментариев нет:
Отправить комментарий