MrCocktail 204 Geschrieben 4. Dezember 2016 Melden 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
Sunny61 833 Geschrieben 4. Dezember 2016 Melden 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.
NilsK 3.046 Geschrieben 4. Dezember 2016 Melden 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
MrCocktail 204 Geschrieben 4. Dezember 2016 Autor Melden 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
blub 115 Geschrieben 4. Dezember 2016 Melden 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
MrCocktail 204 Geschrieben 4. Dezember 2016 Autor Melden 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
Sunny61 833 Geschrieben 4. Dezember 2016 Melden 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.
MrCocktail 204 Geschrieben 5. Dezember 2016 Autor Melden 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
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden