none
Массовое создание контактов и майлбоксов RRS feed

  • Вопрос

  • приветствую уважаемых.

     

    есть файл с набором

    FirstName1,Initials1,LastName1,Email1,FirstName2,Initials2,LastName2,Email2,......до N

    народу много в конторе, этот скрипт надо применить для создания майлбоксов и контактов

    делаю скрипт

     

    $c = Get-Content users1.txt
    $c = [string]$c
    $c = $c.split(",")
    for ($j = $c.length-4; $i -ge 0; $j-=4) {New-MailContact -ExternalEmailAddress 'SMTP:'+$c[$j+3] -Name $c[$j]+' '+$c[$j+1]+'.'+' '+$c[$j+2] -Alias $c[$j]+'.'+$c[$j+2] -OrganizationUnit 'domain.ru/Contacts/Old' -FirstName $c[$j] -Initials $c[$j+1] -LastName $c[$j+2]}

     

     

    так вот значение 'SMTP:'+$c[$j+3] не проходит говорит

     

    New-MailContact : Cannot bind parameter 'ExternalEmailAddress' to the target. Exception setting "ExternalEmailAddress": "Cannot perform this operation with the address 'SMTP:' because it is invalid: The address '' is not a valid SMTP address."

     

    при дебаге

    for ($j = $c.length-4; $i -ge 0; $j-=4) {'SMTP:'+$c[$j+3]}

    выдает правильно

    SMTP:addressN

    SMTP:address1

     

    в чом косяк? и как его исправить?
    2 августа 2007 г. 13:23

Ответы

  •  

    мдя....работа со стрингами в команде какая то мудренная. опытным путем на команде Get-ItemChild -Path был построен правильный цикл.

     

    for ($j = $c.length-4; $j -ge 0; $j-=4) {$Name=[string]($c[$j]+' '+$c[$j+1]+'.'+' '+$c[$j+2]); $SMTP='SMTP:'+[string]$c[$j+3]; $Alias=[string]($c[$j]+'.'+$c[$j+2]); $FN=$c[$j]; $LN=$c[$j+2]; $Initials=$c[$j+1]; $OrgUnit='domain.ru/Contacts/Old'; New-MailContact -Name $Name -ExternalEmailAddress $SMTP -Alias $Alias -OrganizationalUnit $OrgUnit -FirstName $FN -Initials $Initials -LastName $LN}

     

    Теперь надо написать скрипт который снимет обойму данных по юзерям со старого домена и запишет их в файл определенного выше формата.

     

    от предложений не откажусь б-)

    3 августа 2007 г. 3:08

Все ответы

  •  

    мдя....работа со стрингами в команде какая то мудренная. опытным путем на команде Get-ItemChild -Path был построен правильный цикл.

     

    for ($j = $c.length-4; $j -ge 0; $j-=4) {$Name=[string]($c[$j]+' '+$c[$j+1]+'.'+' '+$c[$j+2]); $SMTP='SMTP:'+[string]$c[$j+3]; $Alias=[string]($c[$j]+'.'+$c[$j+2]); $FN=$c[$j]; $LN=$c[$j+2]; $Initials=$c[$j+1]; $OrgUnit='domain.ru/Contacts/Old'; New-MailContact -Name $Name -ExternalEmailAddress $SMTP -Alias $Alias -OrganizationalUnit $OrgUnit -FirstName $FN -Initials $Initials -LastName $LN}

     

    Теперь надо написать скрипт который снимет обойму данных по юзерям со старого домена и запишет их в файл определенного выше формата.

     

    от предложений не откажусь б-)

    3 августа 2007 г. 3:08
  •  

    Можно элементарно использовать ADUC.

    Создаете запрос с нужными полями, а потом делаете экспорт результатов в файл.

    3 августа 2007 г. 4:57
    Модератор
  •  

    да, спасибо так и сделал.

     

    кстати создание контактов вылилось в такую строчку:

     

    Import-Csv contacts.csv | ForEach-Object { $FirstName=$_.FirstName; $Initials=$_.Initials; $LastName=$_.LastName; $SMTP='SMTP:'+$_.ExtEmail; $DisplayName=$FirstName+' '+$LastName; $Alias=$FirstName+$Initials+$LastName; New-MailContact -Name $DisplayName -ExternalEmailAddress $SMTP -Alias $Alias -OrganizationalUnit 'domain.ru/Contacts/Old' -FirstName $FirstName -Initials $Initials -LastName $LastName }

     

    из блога http://blogs.msdn.com/PowerShell/ и в справках

    нифига не понятно Какого формата должен быть CSV файл. тока методом запуска и анализа вывода на эран понимаешь.

     

    Ни как не могу задать параметр в команде ввиде выражения из двух...н переменных которые подаются на вход, т.е.

    New-MailContact -Name $_.FirstName+' '+$_.LastName -ExternalEmailAddress 'SMTP:'+$ExtEmail

     

    пробвал привести к string тоже не прет Sad в чом косяк? как правильно написать выражение?

    6 августа 2007 г. 7:24