我在下面的Powershell代码中显示了所有的Outlook会议。对于重复序列,我需要为每次事件标识一个唯一的会议ID。我尝试过的所有字段(GlobalAppointmentID,entryid,ConversationIndex)都给了我相同的ID。我应该使用哪个字段来区分每次出现。
Function Get-OutlookCalendar {
param ( [DateTime] $rangeStart = [DateTime]::Now.AddDays(-2)
, [DateTime] $rangeEnd = [DateTime]::Now.AddDays(+1))
$outlook = New-Object -ComObject Outlook.Application
$session = $outlook.Session
$session.Logon()
$olFolderCalendar = 9
$apptItems = $session.GetDefaultFolder($olFolderCalendar).Items
$apptItems.Sort("[Start]")
$apptItems.IncludeRecurrences = $true
$range = "[End] >= '{0}' AND [Start] <= '{1}'" -f $rangeStart.ToString("g"), $rangeEnd.ToString("g")
$myObject = New-Object System.Object
$result=@()
foreach($appt in $apptItems.Restrict($range)) {
$result+=$appt
}
return $result
}
Get-OutlookCalendar | %{
if($_.subject -like 'match.com test meeting'){
$_
}
}
正如我所评论的,绝对没有必要“新建”一个数组$result = @()
,每次迭代都销毁并重建它$result += $appt
,只需要输出它即可return $result
。
就将定期会议彼此区分开而言,我发现做到这一点的唯一一致方法是使用日期属性之一。任何起始属性都是候选属性,而ticks子属性是完美的。
更新功能
Function Get-OutlookCalendar {
param ( [DateTime] $rangeStart = [DateTime]::Now.AddDays(-2),
[DateTime] $rangeEnd = [DateTime]::Now.AddDays(+30)
)
$outlook = New-Object -ComObject Outlook.Application
$session = $outlook.Session
$session.Logon()
$olFolderCalendar = 9
$apptItems = $session.GetDefaultFolder($olFolderCalendar).Items
$apptItems.Sort("[Start]")
$apptItems.IncludeRecurrences = $true
$range = "[End] >= '{0}' AND [Start] <= '{1}'" -f $rangeStart.ToString("g"), $rangeEnd.ToString("g")
foreach($appt in $apptItems.Restrict($range)) {
$appt
}
}
查看开始属性。
$entries = Get-OutlookCalendar
$entries | where {$_.subject -like 'test'} | foreach {
$_ | Get-Member -Name start* | where name -notmatch 'timezone'
}
Name MemberType Definition
---- ---------- ----------
Start Property Date Start () {get} {set}
StartUTC Property Date StartUTC () {get} {set}
Start Property Date Start () {get} {set}
StartUTC Property Date StartUTC () {get} {set}
$entries | where {$_.subject -like 'test'} | foreach {
$_.start
}
Wednesday, September 23, 2020 8:00:00 AM
Thursday, September 24, 2020 8:00:00 AM
Friday, September 25, 2020 8:00:00 AM
和推荐的tick子属性
$entries | where {$_.subject -like 'test'} | foreach {
$_.start.ticks
}
637364448000000000
637365312000000000
637366176000000000
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句