MrCocktail 194 Geschrieben 4. Dezember 2016 Melden Teilen Geschrieben 4. Dezember 2016 Hallo zusammen, ich sehe glaube ich gerade den Wald vor lauter Bäumen nicht, vielleicht könnt ihr mir sagen, warum im folgenden Script, nur die ersten 1.000 Elemente gefunden werden # Script um die Kontakte einer Mailbox zu exportieren # Vers. 0.5 # ### Variablen zu befüllen # Welche Mailbox soll ausgelesen werden $mbxName = '' # Wohin soll die Ausgabe geschrieben werden $outtemp = '' $out = '' # Wo befinden sich die Web Services $dllPath = "c:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll" # Initialisierung Export $Export ="Surname;GivenName;CompanyName;Street;City;PostalCode;CountryOrRegion;Fax;Phone;Mobile;EmailAddresses`r`n" # Script / Auslesen der Kontakte # [Int] $intCount = 0 [Void] [Reflection.Assembly]::LoadFile($dllPath) $Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP2) $Service.AutodiscoverUrl($mbxName, {$True}) $RootFolderID = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::contacts, $mbxName) $RootFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($Service, $RootFolderID) $view = New-Object Microsoft.Exchange.WebServices.Data.ItemView(100000,0) $findResults = $Service.FindItems($rootFolderid,$view) foreach($item in $findResults) { $Export += "$($item.Surname);$($item.GivenName);$($item.CompanyName);$($item.PhysicalAddresses[0].Street);$($item.PhysicalAddresses[0].City);$($item.PhysicalAddresses[0].PostalCode);$($item.PhysicalAddresses[0].CountryOrRegion);$($item.PhoneNumbers[1]);$($item.PhoneNumbers[2]);$($item.PhoneNumbers[11]);$($item.EmailAddresses[0].Address)`r`n" } Out-File -FilePath $Outtemp -InputObject $Export -Encoding UTF8 -Force Gruß J Zitieren Link zu diesem Kommentar
Sunny61 807 Geschrieben 4. Dezember 2016 Melden Teilen Geschrieben 4. Dezember 2016 Ändert sich etwas, wenn Du diesen Wert anpasst? $view = New-Object Microsoft.Exchange.WebServices.Data.ItemView(100000,0) Einfach mal 99 reinschreiben, um zu sehen ob es daran liegt. Zitieren Link zu diesem Kommentar
NilsK 2.958 Geschrieben 4. Dezember 2016 Melden Teilen Geschrieben 4. Dezember 2016 Moin. die 1000 könnte der Standardwert bei AD-Abfragen sein. Active Directory unterstützt Paging, d.h. bei großen Resultsets kann man einzelne "Seiten" zu 1000 Objekten anfordern. Wie man das in deinem Fall konkret macht, müsstest du allerdings recherchieren. Gruß, Nils Zitieren Link zu diesem Kommentar
MrCocktail 194 Geschrieben 4. Dezember 2016 Autor Melden Teilen Geschrieben 4. Dezember 2016 Hi, Fehler gefunden, wie ich ihn jetzt umgehe muss ich mal schauen ... Fehler ist EWSFindCountLimit = 1000 Auf einem 2010 kann ich diesen Wert hoch setzen in der Policy, auf einen 2013 anscheinend nicht, ich werde eine Lösung suchen... Gruß J Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 4. Dezember 2016 Melden Teilen Geschrieben 4. Dezember 2016 Ändert sich etwas, wenn Du diesen Wert anpasst? $view = New-Object Microsoft.Exchange.WebServices.Data.ItemView(100000,0) Einfach mal 99 reinschreiben, um zu sehen ob es daran liegt. Im msdn-Beispiel wird sogar Itemview(6,0) gesetzt. https://msdn.microsoft.com/en-us/library/office/dn592093(v=exchg.150).aspx woher kommen die ItemView(100000,0)? https://msdn.microsoft.com/en-us/library/microsoft.exchange.webservices.data.itemview_members(v=exchg.80).aspx Zitieren Link zu diesem Kommentar
MrCocktail 194 Geschrieben 4. Dezember 2016 Autor Melden Teilen Geschrieben 4. Dezember 2016 Hi, jap... Ich bin schon dran, werde es aber heute nicht mehr fertig bekommen... Jetzt ist für mich mal FA.. Aber das passiert, wenn man Scripte von 2010 nach 2013 migriert. Gruß J Zitieren Link zu diesem Kommentar
Sunny61 807 Geschrieben 4. Dezember 2016 Melden Teilen Geschrieben 4. Dezember 2016 Aber das passiert, wenn man Scripte von 2010 nach 2013 migriert. Evtl. mußt Du hier aus Exchange 2010 SP2 den Exchange 2013 SP irgendwas machen. $Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP2) Exchange2013_SP1 mußt Du lt. https://msdn.microsoft.com/en-us/library/microsoft.exchange.webservices.data.exchangeversion(v=exchg.80).aspx eintragen. Zitieren Link zu diesem Kommentar
MrCocktail 194 Geschrieben 5. Dezember 2016 Autor Melden Teilen Geschrieben 5. Dezember 2016 Morgen, Fehler gefunden, Lösung steht unten ... Danke euch allen :-) @blub: Im Exchange 2010 konnte ich den Wert per Policy auf 100.000 Elemente für bestimmte User hochsetzen, beim Exchange 2013 geht das nicht mehr. $offset = 0; $pagesize = 20; $MoreItems = $True; [Int] $intCount = 0 [Void] [Reflection.Assembly]::LoadFile($dllPath) $Service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP2) $Service.AutodiscoverUrl($mbxName, {$True}) $RootFolderID = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::contacts, $mbxName) $RootFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($Service, $RootFolderID) while ($MoreItems) { $view = New-Object Microsoft.Exchange.WebServices.Data.ItemView($pagesize,$offset) $findResults = $Service.FindItems($rootFolderid,$view) foreach($item in $findResults) { $Export += "$($item.Surname);$($item.GivenName);$($item.CompanyName);$($item.PhysicalAddresses[0].Street);$($item.PhysicalAddresses[0].City);$($item.PhysicalAddresses[0].PostalCode);$($item.PhysicalAddresses[0].CountryOrRegion);$($item.PhoneNumbers[1]);$($item.PhoneNumbers[2]);$($item.PhoneNumbers[11]);$($item.EmailAddresses[0].Address)`r`n" } If (!$findResults.MoreAvailable) { $MoreItems = $False } If ($MoreItems) { $offset += $pagesize } } # Ausgabe Out-File -FilePath $Outtemp -InputObject $Export -Encoding UTF8 -Force Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.