これを読んでいたら Show-Calendar という例が出てきたので、なんかできそうな気がしたので書いてみました。
そういえば Windows には cal コマンド無いですね。
function show-calendar { param([datetime]$Today = (date)); [datetime]$First = $Today.ToString("yyyy-MM-01"); [datetime]$Last = $Today.AddMonths(1).ToString("yyyy-MM-01"); $week = @{}; for([datetime]$day = $First;$day -lt $Last;$day = $day.AddDays(1)){ $week.add($day.DayOfWeek.tostring().substring(0,3),$day.day); if($day.dayofweek -eq "saturday"){[pscustomobject]$week; $week = @{}} } [pscustomobject]$week }; show-calendar | select sun,mon,tue,wed,thu,fri,sat | ft
結果はこんな感じで
sun mon tue Wed Thu Fri Sat
--- --- --- --- --- --- ---
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
広げてみるとこんな感じで
function show-calendar {
param([datetime]$Today = (date))
[datetime]$First = $Today.ToString("yyyy-MM-01")
[datetime]$Last = $Today.AddMonths(1).ToString("yyyy-MM-01")
$week = @{}
for([datetime]$day = $First;$day -lt $Last;$day = $day.AddDays(1)){
$week.add($day.DayOfWeek.tostring().substring(0,3),$day.day)
if($day.dayofweek -eq "saturday"){
[pscustomobject]$week
$week = @{}
}
}
[pscustomobject]$week
}
show-calendar | select sun,mon,tue,wed,thu,fri,sat | ft
最後の曜日を並べるところは select やないか。
記事は読み終わってないし、目的を見失った良い連休だった。