none
sync mailcontact from csv file RRS feed

  • Вопрос

  • Доброго времени суток.

    Требуется сделать скрипт, производящий синхронизацию контактов в определенном OU с периодически обновляемым csv файлом.

    Есть вот что:
    $path = "D:\...\import_22_05_2012_utf.csv"
    $org_unit = "...\OU"
    $csv_source = import-csv -path $path -Delimiter ";"
    $exist_mcont = @()
    # -ResultSize unlimited
    Get-MailContact -OrganizationalUnit $org_unit |foreach {
    $cont_email = @($_.EmailAddresses)
    $exist_mcont = $exist_mcont + $cont_email
    }
    $csv_source | foreach {
                           #$_.WindowsEmailAddress
                          #write-host $_."Name" $_."alias" $_."WindowsEmailAddress" $org_unit
                           if (($exist_mcont) -notcontains $_."WindowsEmailAddress") {
                                                                                 New-MailContact -Name $_."Name" -alias $_."alias" -ExternalEmailAddress $_."WindowsEmailAddress" -PrimarySmtpAddress $_."WindowsEmailAddress" -organizationalunit $org_unit
                                                                              Set-Contact -Identity $_."Name" -company "ОАО" -department $_."department" -phone $_."phone" -city $_."city" -OtherTelephone $_."OtherTelephone" -office $_."company" -title $_."title" -StreetAddress $_."StreetAddress"
                                                                              $curr_email = @($_.WindowsEmailAddress)
                                                                              $exist_mcont = $exist_mcont + $curr_email
                                                                              } else {
                                                                                       Set-Contact -Identity $_."WindowsEmailAddress" -company "ОАО" -department $_."department" -phone $_."phone" -city $_."city" -OtherTelephone $_."OtherTelephone" -office $_."company" -title $_."title" -StreetAddress $_."StreetAddress"
                                                                                     }
                           
                          }
    #Проверка OU на наличие мертвых душ. Статус - не доделано.
    #Get-MailContact -OrganizationalUnit $org_unit |foreach {
    #                                                        $_.EmailAddresses
    #                                                        (($csv_source) -notcontains $_.EmailAddresses)
    #                                                        if (($csv_source) -notcontains $_.EmailAddresses) {
    #                                                                                                        Write-host "remove contact"
    #                                                                                                        } else {Write-host "do not remove contact"}
    #                                                        }   

    То, что закомментировано - попытка выявления контактов, которые не содержатся в обновленном списке csv.

    Вопрос: делал ли кто скрипт, который помимо создания, обновления контактов выявлял еще и "мертвые души". Если да, то как получилось реализовать последнее.


    MCP,MCTS

Все ответы

  • Господа, неужели никто не реализовывал данный функционал? Ведь задача довольно обыденная.

    MCP,MCTS

  • Вот недавно обсуждалось: http://social.technet.microsoft.com/Forums/ru-RU/exchange2010ru/thread/fd4b4e5c-e10a-40d9-a6f4-082e598f3a53 

    У меня всё отлично отработало.

  • Вот недавно обсуждалось: http://social.technet.microsoft.com/Forums/ru-RU/exchange2010ru/thread/fd4b4e5c-e10a-40d9-a6f4-082e598f3a53 

    Мой вопрос заключался не в том как сделать new или set, а как при отсутствии контакта во вновь пришедшем csv прошерстить OU найти его и предложить удалить. Без этого при большой разнице в приходящих csv кол-во контактов будет расти, не учитывая сотрудников, которые, например, уволились из компании партнера.

    MCP,MCTS

  • Попытаюсь объяснить подробнее, что именно у меня не получается в процессе реализации проверки "мертвых душ":

    Я перебираю все mailcontact в OU, где присутствуют исключительно только периодически импортируемые контакты. В цикле для каждого из этих контактов проверяю содержится ли его email в переменной, которая содержит импортированные из csv значения ($csv_source). Если такое совпадение не обнаружиться, администратору должно выводиться предложение о том, что этот контакт не содержится в "свежеприсланном" файле и его можно удалить.

    Несостыковка происходит на этапе сравнения email и массива импортированных в переменную значений. Скорее всего типы не совпадают и из-за этого сравнение происходит некорректно.

    Буду благодарен любым предложениям и советам.


    MCP,MCTS