我正在尝试阅读 Outlook 日程安排中的约会。
基本上,我想做的是选择某个日期范围内最常见的 4 个约会,主题为 DONE;然后删除第一个分号后的所有内容。
我已经取得了很大进展,但我有两个问题:
- 我无法过滤主题。日期过滤器可以工作;但只能保留包含 DONE 的约会;看来我遇到了问题?
- 我怎样才能删除 : (分号) 后面的所有内容?我以为我可以快速完成类似的事情,
$_.subject.substring(0,$_.subject.IndexOf(':'))
但我不知道将其放在哪里。
$outlook = new-object -com Outlook.Application
$calendar = $Outlook.session.GetDefaultFolder(9)
$calendar.items | Where {$_.start -gt [datetime]'01/1/2020' -and $_.end -lt [datetime]'01/31/2020' -and $_.Suject -like '*Done*'} | group-object -property subject -noelement | sort-object count -Descending | Where-object count -gt 1
答案1
我没有外表,但我想您的过滤器问题是拼写错误……
$outlook = new-object -com Outlook.Application
$calendar = $Outlook.session.GetDefaultFolder(9)
$calendar.items |
Where {$_.start -gt [datetime]'01/1/2020' -and
$_.end -lt [datetime]'01/31/2020' -and
$_.Subject -like '*Done*'} |
Group -property subject -noelement |
Where count -gt 1 |
Sort Count -Descending
不确定要将文本尾随分号放到哪里...
选项:
$calendar.items | ForEach{
$_.Subject = $_.Subject.Split(';')[0]
} |
Where {$_.Start...
或者:
...
Where count -gt 1 |
Sort Count -Descending | ForEach{
$_.Name = $_.Name.Split(';')[0]
}