PowerShell 技能连载 - 通过 PowerShell 创建日历电子表格

是否需要计划为您的俱乐部,社区或爱好进行重复的会议吗?当然,有很多在线工具可以帮助您,但如果您想在 Microsoft Excel 中创建日历列表,PowerShell 可以是一个优秀的帮手。

让我们假设您每周三都有一次重复的会议,会议在下午十二点开始,除了每个月的最后一周。

您可以这样使用 PowerShell,而不是将这些日期和时间手动添加到 Excel 表:

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# generate calendar for weekly incidents

$startdate = [DateTime]'2022-06-01'
$numberOfWeeks = 52
$result = for ($week = 0; $week -lt $numberOfWeeks; $week ++)
{
# calculate the real date each week
$realdate = $startdate + (New-Timespan -days (7*$week))

# calculate the current month
$month = $realdate.Month

# calculate the days in this month
$daysInMonth = [DateTime]::DaysInMonth($realdate.Year, $realdate.Month)

# make arbitrary adjustments, i.e. set start time to 12PM by default, but 7PM on the last week of a month

# are we in the last week of a month?
if ($realdate.Day -gt ($daysInMonth-7))
{
# add 19 hours
$realdate = $realdate.AddHours(19)
}
else
{
# add 12 hours
$realdate = $realdate.AddHours(12)
}

# create your Excel sheet layout as a CSV file
[PSCustomObject]@{
Start = $realdate
IsOnline = $false
Title = ''
Speaker = ''
Notes = ''
}
}


$path = "$env:temp\calendar.csv"
$result | Export-Csv -UseCulture -Path $path -Encoding UTF8 -NoTypeInformation

# open CSV in Excel
Start-Process -FilePath excel -ArgumentList $path

此脚本使用了许多有用的技术:

  • 在循环中使用偏移量来构建日期(在此示例中是 7 天,可以轻松调整成任何其他间隔)
  • 通过计算当前月份的天数来识别“该月的最后一周”,然后根据此计算日期进行调整
  • 在 Microsoft Excel 中生成 CSV 数据和打开 CSV(如果已安装)

PowerShell 技能连载 - 通过 PowerShell 创建日历电子表格

http://blog.vichamp.com/2022/02/07/creating-calendar-spreadsheets-with-powershell/

作者

吴波

发布于

2022-02-07

更新于

2022-07-06

许可协议

评论