none
Import Contacts from CSV Into Exchange 2007 RRS feed

  • Dotaz

  • Dobrý den,

    potřebuji do kontaktů ve firemní síti naimportovat kontakty z vytvořeného v jiném systému (Lotus Notes) csv souboru.

    Chtěl bych poprosit o pomoc s úpravou skriptu pro import kontaktů ze souborů csv do kontaktů v Active Directory.

    Takhle jsou uspořádnány data v csv:

    Jméno; nepotřebná informace; nepotřebná informace; email; nepotřebná informace; nepotřebná informace

    A tady je powershell script, který by měl provést import:

    Add-Content c:\debug.txt "::Starting Import: ";
    
    $err = "";
    
    Import-Csv Import-CSV-Contacts.csv | ForEach-Object{
    
    New-MailContact -DomainController dc.domain.com -Name $_."displayName" -Firstname $_."FirstName" -Lastname $_."LastName" -ExternalEmailAddress $_."E-mail Address" -OrganizationalUnit "harrynorman.com/Offices/Contacts/Dickenson Gilroy Law Firm" -ErrorAction SilentlyContinue -ErrorVariable +err | Set-Contact -DomainController dc.domain.com -City $_."Business City" -Company $_."Company" -Office $_."Office" -DisplayName $_."displayName" -Fax $_."Business Fax" -Name $_."displayName" -Phone $_."Business Phone" -PostalCode $_."Business Postal Code" -StateOrProvince $_."Business State" -StreetAddress $_."Business Street" -Title $_."Title" -ErrorAction SilentlyContinue -ErrorVariable +err;
    
    Set-MailContact -Identity $_."displayName" -DomainController dc.domain.com -ErrorAction SilentlyContinue -ErrorVariable +err;
    }
    Add-Content c:\debug.txt $err;

    Předem Vám moc děkuji,

    Dimitrij.

     

     

    středa 21. dubna 2010 13:13

Odpovědi

  • Zdravím,

    řešení je určitě spousta, takže to moje berte jako jedno z možných. Navíc má každý jiný styl psaní skriptů (definici proměnných, jejich pojmenování apod.).

    Skript předpokládá, že existuje soubor Contacts.csv, který kromě dat o kontaktech obsahuje i hlavičku, jak je popsaná v komentáři ve skriptu. Je důležité tam tu hlavičku mít.

    Pak ještě druhá věc. Atribut CountryOrRegion neakceptuje textovhý řetězec, např. "Czech Republic", ale CountryCode. Proto předpokládám, že existuje soubor Countries.csv, který obsahuje kromě hlavičky Title,Code i páry Nazev_zeme,Kod, napr. "Czech Republic",CZ.

    Ve skriptu pak načítám hodnotu Country z Contacts.csv a hledám k ni CountryCode. Pokud nechcete Country vůbec řešit (chybí i ve vašem původním skriptu, dá se celý ten blok vynechat).

    Kód skriptu:

    ####################################
    # 
    # AddContactsBulk.ps1
    #
    ####################################
    
    # Hlavicka zdrojoveho CSV
    #DisplayName,FirstName,LastName,ExtEmail,BusinessCity,Company,Office,BusinessPhone,PostalCode,BusinessState,BusinessStreet,Title,Country
    #Doe John,John,Doe,john.doe@firma.cz,....
    
    # Variables
    $strOU = "harrynorman.com/Offices/Contacts/Dickenson Gilroy Law Firm"
    $ErrorActionPreference = "SilentlyContinue"
    $strDC = "dc.domain.com"
    
    Add-Content c:\debug.txt "::Starting Import: "
    $err = ""
    
    # Import seznamu s CountryNames and CoutryCodes
    $Countries = Import-Csv 'countries.csv'
    
    
    $colContacts = Import-Csv Contacts.csv
    Foreach ($objCon in $colContacts)
    {
     
     $strCountryCode = 'CZ' #Vychozi countryCode, pokud neni nalezeno.
     foreach($Country in $Countries)
     {
       if ($Country.Title -eq $objCon.Country) 
     {
         $strCountryCode = $Country.Code
     } 
     } 
     
     New-MailContact -DomainController $strDC -Name $objCon.DisplayName -ExternalEmailAddress $objCon.ExtEmail -Firstname $objCon.FirstName -Lastname $objCon.LastName -OrganizationalUnit $strOU -ErrorVariable +err
     Set-Contact -Identity $objCon.DisplayName -DomainController $strDC -CountryOrRegion $strCountryCode -City $objCon.BusinessCity -Company $objCon.Company -Office $objCon.Office -Fax $objCon.BusinessFax -Phone $objCon.BusinessPhone -PostalCode $objCon.PostalCode -StateOrProvince $objCon.BusinessState -StreetAddress $objCon.BusinessStreet -Title $objCon.Title -ErrorVariable +err
    }
    
    Add-Content c:\debug.txt $err

     

    Jak říkám, je to jen jedno z řešení...

    čtvrtek 22. dubna 2010 20:37