none
EWS Fehler - Informationspeicher nicht gefunden RRS feed

  • Frage

  • Guten Tag

    Ich habe ein Script welches mit der EWS Schnittstelle Kalendereinträge in diverse mailbox kalender erstellen soll. leider bekomme ich bei diverse Benutzer immer folgender Fehler:

    Ausnahme beim Aufrufen von "Bind" mit 2 Argument(en):  "Der angegebene Ordner wurde im Informationsspeicher nicht gefun
    den."
    Bei C:\Users\administrator.XXX\Desktop\insertCalendar2.ps1:63 Zeichen:78
    +     $calendarFolder = [Microsoft.Exchange.WebServices.Data.CalendarFolder]::Bind <<<< ($service, $calendarFolderId)
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : DotNetMethodException

    Ich habe auf alle Mailboxen folgende Berechtigung angewant:

    $usersWithMailbox = Get-User -OrganizationalUnit "OU=Benutzer,OU=Benutzer,OU=XXXXX,DC=XXXX,DC=LOCAL" -ResultSize Unlimited | Select-Object sAMAccountName,userPrincipalName,RecipientType
    
    ForEach ($uwm in $usersWithMailbox){ 
    	If ($uwm.RecipientType -eq "UserMailbox"){
    		Add-MailboxPermission -Identity $uwm.userPrincipalName -User administrator@XX.ch -AccessRights FullAccess | Out-File ".\addedFAP.txt" -Append
    		Set-MailboxFolderPermission  -Identity $uwm.userPrincipalName:\Calendar -User administrator@XX.ch -AccessRights Owner | Out-File ".\addedFAP.txt" -Append
    		Set-MailboxFolderPermission  -Identity $uwm.userPrincipalName:\Kalender -User administrator@XX.ch -AccessRights Owner | Out-File ".\addedFAP.txt" -Append
    		Set-MailboxFolderPermission  -Identity $uwm.userPrincipalName -User administrator@XX.ch -AccessRights Owner | Out-File ".\addedFAP.txt" -Append
    
    	}
    }
    

    folgend das Script mit dem ich die Kalender Einträge erstellen möchte:

    # Initialize
    Add-Type -Path "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll"
    $sid = [System.Security.Principal.WindowsIdentity]::GetCurrent().User.Value
    $user = [ADSI]"LDAP://<SID=$sid>"        
    $service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService -ArgumentList ([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP2)
    $service.AutodiscoverUrl($user.Properties.mail)
    
    
    # All aclendar events
    $events = @(
    	('01.01.2018', 'Neujahr', 'OOF')
    )
    
    
    
    # Getting all Mailboxes 
    $mailBoxes = Get-Mailbox -OrganizationalUnit "OU=Benutzer,OU=Benutzer,OU=XXXX,DC=XXX,DC=LOCAL" -ResultSize Unlimited | Select-Object DisplayName,PrimarySmtpAddress
    
    
    ForEach ($m in $mailBoxes){ 
    
    	('#####################################################################') | Out-File ".\kalendereintraege.txt" -Append
    	($m.DisplayName + " | " + $m.PrimarySmtpAddress) | Out-File ".\kalendereintraege.txt" -Append 
    	('---------------------------------------------------------------------------') | Out-File ".\kalendereintraege.txt" -Append
    	
    	# Get Calendar entry from each user
    	$calendarFolderId = New-Object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Calendar,[string]$m.PrimarySmtpAddress) 
    	$calendarFolder = [Microsoft.Exchange.WebServices.Data.CalendarFolder]::Bind($service, $calendarFolderId) 
    
    	
    	$calendarView = New-Object Microsoft.Exchange.WebServices.Data.CalendarView("12/31/2018","1/5/2019")
    	$calendarView.MaxItemsReturned = 20000;
    	$calendarView.PropertySet = New-Object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties)
    	$userCalendarEntrysResult = $calendarFolder.FindAppointments($calendarView)
    
    	
    	$userCalendarEntrysResult | Format-Table Start, End, LegacyFreeBusyStatus, Subject, IsAllDayEvent 
    	
    	
    	$ImpersonatedUserId = New-Object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId -ArgumentList ([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress), $m.PrimarySmtpAddress
    	$service.ImpersonatedUserId = $ImpersonatedUserId 
    
    
    	# ADD Item
    
    	ForEach ($e in $events) {
    		
    		if (-Not ($userCalendarEntrysResult | ? {$_.Subject -like $e[1]})) {
    			
    			
    			# For allDayEvent Start and End need to be 24 apart
    			$start = (Get-Date $e[0])
    			$end = $start.addhours(24)
    			
    			# Calendar event / More properties https://msdn.microsoft.com/en-us/library/microsoft.exchange.webservices.data.appointment_properties%28v=exchg.80%29.aspx 
    			$appointment = New-Object Microsoft.Exchange.WebServices.Data.Appointment -ArgumentList $service
    			$appointment.Subject = $e[1]
    			$appointment.Body = ''
    			$appointment.Start = $start
    			$appointment.End = $end
    			$appointment.IsAllDayEvent = $True
    			$appointment.LegacyFreeBusyStatus = $e[2]
    			$appointment.IsReminderSet = $False
    			$appointment.Location = ''
    			#$appointment.Categories.Add('Frei')
    			#$appointment.RequiredAttendees.Add('sitzungszimmer@xxxx.ch')
    			#$appointment.Save([Microsoft.Exchange.WebServices.Data.SendInvitationsMode]::SendToAllAndSaveCopy)
    
    			
    			("+ Erstellt | " + $e[1]) | Out-File ".\kalendereintraege.txt" -Append
    			
    		} else {
    			("! Vorhanden | " + $e[1]) | Out-File ".\kalendereintraege.txt" -Append
    		}
    
    	} 
    
    
    }

    hat mir jemand ein tipp wie ich vorgehen soll? Ich bin am Ende meiner Nerven -.-


    • Bearbeitet Edocsyl Freitag, 2. Dezember 2016 16:40 remove company name
    Freitag, 2. Dezember 2016 16:39

Alle Antworten