locked
Export sdíleného kalendáře v powershellu RRS feed

  • Dotaz

  • Zdravím, používám Exchange 2010 a jako klienta Outlook 2013 a chtěl bych pomocí powershellu vyexportovat do formátu ICS obsah sdíleného kalendáře. Zkoušel jsem níže uvedený kod

    $owner = "uzivatel@email.cz"
    $path = "C:\powershell\outlook\calendar.ics"
    
    Add-Type -AssemblyName 'Microsoft.Office.Interop.Outlook'
    
    $outlook = New-Object -ComObject outlook.application
    $namespace = $outlook.GetNameSpace('MAPI')
    $olFolderCalendar = [Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderCalendar
    $recipient = $namespace.Session.CreateRecipient($owner)
    $null = $recipient.Resolve()
    $CalendarFolder = $namespace.Session.GetSharedDefaultFolder($recipient, $olFolderCalendar)
    $calendarsharing = $CalendarFolder.GetCalendarExporter()
    $CalendarSharing.CalendarDetail = 2
    $CalendarSharing.IncludeAttachments = $false
    $CalendarSharing.IncludePrivateDetails = $false
    $CalendarSharing.RestrictToWorkingHours = $false
    $CalendarSharing.startDate = (get-date).AddDays(-365)
    $CalendarSharing.endDate = (get-date)
    $MailItem = $CalendarSharing.SaveAsICal($Path)
    

    Tento kod mi však vrací chybu. Mohl by mi prosím někdo poradit, jak tento problém vyřešit. Děkuji

    Cannot convert argument "0", with value: "System.__ComObject", for "GetSharedDefaultFolder" to type "Microsoft.Office.Interop.Outlook.Recipient": "Cannot convert the "System.__ComObject" value of type "Syst
    em.__ComObject#{00063045-0000-0000-c000-000000000046}" to type "Microsoft.Office.Interop.Outlook.Recipient"."
    At C:\powershell\outlook\test.ps1:13 char:60
    + $CalendarFolder = $namespace.Session.GetSharedDefaultFolder <<<< ($recipient, $olFolderCalendar)
        + CategoryInfo          : NotSpecified: (:) [], MethodException
        + FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument

    neděle 12. dubna 2020 11:04

Všechny reakce

  • a ses si jisty timto?

    $CalendarFolder = $namespace.Session.GetSharedDefaultFolder($recipient, $olFolderCalendar)

    IMHO to podle dokumentace ma byt $namespace.GetSharedDefaultFolder($recipient, $olFolderCalendar)

    https://docs.microsoft.com/en-us/office/vba/api/outlook.namespace.getshareddefaultfolder

    úterý 14. dubna 2020 9:24
  • Díky za reakci, zkoušel jsem to i bez Session, ale chyba zůstává stále stejná.
    úterý 14. dubna 2020 9:37
  • Kdyz me se to neche zkouset :) a na sucho nic vic nevymyslim. zapatrej na Google :)
    úterý 14. dubna 2020 10:43
  • Chápu. Na google jsem zkoušel hledat, ale bohužel se mi nic nepodařilo dohledat. Pak jsem zkoušel i forum powershell.org, tam se nám podařilo zjistit, že nelze převést objekt com na příjemce. Příčinu se mi bohužel zatím nepodařilo zjistit.


    úterý 14. dubna 2020 13:54