Цикл ForEach не совпадает с напечатанным в CLI? - PullRequest
0 голосов
/ 05 мая 2019

Когда я набираю '

$Listboxcal= New-Object System.Windows.Forms.ListBox 

add-type -assembly “Microsoft.Office.Interop.Outlook” | out-null
$outlook = new-object -comobject outlook.application
$namespace = $outlook.GetNameSpace(“MAPI”)
# https://docs.microsoft.com/en-us/dotnet/api/microsoft.office.interop.outlook.oldefaultfolders?view=outlook-pia
# Calendar = olFolderCalendar = 9
$calendar = $namespace.GetDefaultFolder(9)

# get today's calendar items!
 $cItems = $calendar.Items | Where-Object {$_.Start -ge $(Get-Date) -and $_.Start -le $(Get-Date).AddDays(1)} | select Start, Subject. 

'CLI отлично печатает дату / время / заголовок темы

однако, когда я добавляю '

$Listboxcal= New-Object System.Windows.Forms.ListBox 
$Listboxcal.Location = New-Object System.Drawing.Size(10,10) 
$Listboxcal.Size = New-Object System.Drawing.Size(230,270) 
$Listboxcal.Height = 150
[…]
ForEach ($calendars in $cItems) {[void]$Listboxcal.Items.Add($calendars)} '

У меня печатается только "@ (Start = 05/05/2019 11:30:00; Subject =}". В идеале я хотел бы, чтобы Time start и Subject печатались в окне списка. Есть идеи?

1 Ответ

0 голосов
/ 05 мая 2019

Никогда явно не фильтруйте элементы в вашем коде - это очень неэффективно. Всегда используйте Items.Find / FindNext или Items.Restrict, особенно если вы хотите расширить повторения.

См. Пример на https://docs.microsoft.com/en-us/office/vba/api/outlook.items.includerecurrences

...