Jump to content

Powershell EWS / Kontakte


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

Ä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

Geschrieben

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.
Geschrieben

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
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...