Globale Adressliste Outlook exportieren und Exchange importieren?
besteht die Möglichkeit lokal gespeicherte Kontakte in Outlook in die globale Adressliste in Exchange zu importieren?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 615215
Url: https://administrator.de/forum/globale-adressliste-outlook-exportieren-und-exchange-importieren-615215.html
Ausgedruckt am: 23.12.2024 um 01:12 Uhr
4 Kommentare
Neuester Kommentar
Ungünstig.
Man kann Outlook-Kontakte exportieren. Bestimmt auch als CSV.
Und es gibt genug Anleitungen im Web, wie man AD-Objekte aus CSV-Dateien importieren kann. ("Massenimport") (hier als Kontakt-Objekte)
Beides muss man jetzt nur zusammenbringen.
ansonsten geht das nicht über die Exchange Konsole, eingabe über csv oderso
Jain.Man kann Outlook-Kontakte exportieren. Bestimmt auch als CSV.
Und es gibt genug Anleitungen im Web, wie man AD-Objekte aus CSV-Dateien importieren kann. ("Massenimport") (hier als Kontakt-Objekte)
Beides muss man jetzt nur zusammenbringen.
Servus erst mal, so viel Zeit sollte noch sein @knowhow0705!
(Skript hat keine weiteren Modul-Abhängigkeiten, es muss also kein AD- oder EX-Modul installiert sein, und wird mit dem Account ausgeführt bei dem die Kontakte in Outlook liegen, es müssen nur einmalig entsprechende Credentials für den Exchange/AD angegeben werden)
Könnte man jetzt auch mit EWS Scripten aber zur Abwechslung mal so
Viel Spaß
Grüße Uwe
(Anpassung-Support nur via PN )
Zitat von @knowhow0705:
besteht die Möglichkeit lokal gespeicherte Kontakte in Outlook in die globale Adressliste in Exchange zu importieren?
Kurz und knapp, ja, Beispiel mit Powershell:besteht die Möglichkeit lokal gespeicherte Kontakte in Outlook in die globale Adressliste in Exchange zu importieren?
(Skript hat keine weiteren Modul-Abhängigkeiten, es muss also kein AD- oder EX-Modul installiert sein, und wird mit dem Account ausgeführt bei dem die Kontakte in Outlook liegen, es müssen nur einmalig entsprechende Credentials für den Exchange/AD angegeben werden)
Könnte man jetzt auch mit EWS Scripten aber zur Abwechslung mal so
# get credentials to access ad and exchange server
$excreds = Get-Credential -Message "Enter credentials valid to edit objects in Exchange and AD:"
if (!$excreds){return}
# load outlook object
[void][reflection.assembly]::LoadWithPartialName("microsoft.visualbasic")
$objOL = [microsoft.visualbasic.interaction]::GetObject($null,"Outlook.Application")
if (!$objOL){$objOL = New-Object -Com Outlook.Application}
# choose outlook folder via dialog picker
write-host "Please choose contactfolder from Outlook-Dialog, and allow access to contacts)" -F Magenta
$contactfolder = $objOL.Session.PickFolder()
if(!$contactfolder){return}
if ($contactFolder.DefaultMessageClass -ne 'IPM.Contact'){
throw "Folder is not a contact folder!"
Read-Host "`nPress enter to exit"
return
}
write-host "Folder choosen: $($contactfolder.FullFolderPath)"
# mapping between AD properties and outlook properties
$propertymapping = @{
streetAddress = 'MailingAddressStreet'
l = 'MailingAddressCity'
postalCode = 'MailingAddressPostalCode'
postOfficeBox = 'MailingAddressPostOfficeBox'
st = 'MailingAddressState'
homePhone = 'HomeTelephoneNumber'
pager = 'PagerNumber'
mobile = 'MobileTelephoneNumber'
facsimileTelephoneNumber = 'HomeFaxNumber'
ipPhone = 'IMAddress'
department = 'Department'
company = 'CompanyName'
info = 'Body'
title = 'JobTitle'
initials = 'Initials'
}
$session = $null
# Connect to Exchange
try{
# determine Exchange server FQDN from AD
$exchange_server = (new-object adsisearcher("LDAP://$(([adsi]'LDAP://rootDSE').configurationNamingContext)","(objectClass=msExchExchangeServer)","networkaddress",[System.DirectoryServices.SearchScope]::Subtree)).FindOne() | %{$_.Properties['networkaddress'] | ?{$_ -match 'ncacn_ip_tcp'} | %{$_.split(":")[1]} | select -First 1}
if (!$exchange_server){Write-Host "Could not determine Exchange-Server FQDN from AD" -ForegroundColor Red; return}
write-host "Creating connection to Exchange-Server '$exchange_server' ..." -ForegroundColor Green
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://$exchange_server/powershell/?SerializationLevel=Full" -Authentication Kerberos -Credential $excreds
Import-PSSession $session -DisableNameChecking -AllowClobber | out-null
}catch{
throw $_
Read-Host "`nPress enter to exit"
return
}
# for each contact
foreach ($olcontact in $contactFolder.Items){
$mc = $null
# check if contact does not exists create it
if (!($mc = Get-MailContact $olcontact.FullName -EA SilentlyContinue)){
write-host "Creating new exchange mail contact '$($olcontact.FullName)' ... " -NoNewline -F Green
try{
$mc = New-MailContact -FirstName $olcontact.FirstName -LastName $olcontact.LastName -ExternalEmailAddress $olcontact.EMail1Address -Name $olContact.FullName -EA Stop
}catch{
write-host $_.Exception.Message -F Red
continue
}
}else{
write-host "Updating existing mail contact '$($olcontact.FullName)' ... " -NoNewline -F Cyan
}
# get directory entry
$contact = new-Object adsi "LDAP://$($mc.DistinguishedName)",$excreds.UserName,$excreds.GetNetworkCredential().Password
# set contact advanced properties
$propertyMapping.GetEnumerator() | ?{$olcontact.($_.Value) -ne ''} | %{
$contact.InvokeSet($_.Key,$olcontact.($_.Value))
}
# save contact object
try{
$contact.CommitChanges()
write-host "OK." -F Green
}catch{
write-host $_.Exception.Message -F Red
}
}
# close exchange session
if ($session){
Remove-PSSession $session
}
Read-Host "`nPress enter to exit"
Grüße Uwe
(Anpassung-Support nur via PN )