none
Массовое изменение атрибутов пользователей proxyAddresses RRS feed

  • Вопрос

  • Доброго всем дня.

    Имеется около 300 пользователей, содержащих в атрибуте proxyAddresses значения SMTP:user@domain1.ru smtp:user@domain2.ru и т.д.

    Собственно, задача стоит следующая: запись SMTP:user@domain1.ru изменить на smtp:user@domain1.ru и добавить запись SMTP:user@domain.com

    Сразу оговорюсь, что с PS практически не знаком.

    P.S. CSV со списком логинов, значений атрибутов и т.д. подготовить не проблема.


    • Изменено tesser 27 февраля 2014 г. 4:23 опечатки
    27 февраля 2014 г. 4:21

Ответы

  • Спасибо.  я сделал вот так (содрал с какого то обсуждения здесь):

    #Задаем переменные
    [string]$proxydomain_1 = "@domain1.ru"; #Основной домен (адрес для ответа)
    [string]$proxydomain_2 = "@domain2.ru"; #Дополнительные домен
    [string]$usersOU = "OU=Users,DC=Contoso,DC=RU"; #Юнит, в котором производить действия
    [string]$powersnapin = "Coexistence-Configuration"; #Directory Sync PS-Snapin name
    [string]$email = $_.SamAccountName + '$proxydomain_1'
    
    #Подключаем модуль Active Directory для PowerShell
    Import-Module ActiveDirectory
    
    #Начинаем цикличоское изменение атрибутов
    Get-ADUser -Filter "*" -SearchScope Subtree -SearchBase "$usersOU" -Properties ProxyAddresses, givenName, Surname, mail | foreach-object {
    
    Write-Host "Editing user: $_.SamAccountName"
    
    if ($_.Proxyaddresses -match $_.SamAccountName+""+$proxydomain_1)
    {
    Write-Host "Result: Proxy Address already exists; No action taken."
    }
    else
    {
    #Добавляем записи для Exchange
    #удаляем SMTP:*@domain2.ru
    Set-ADUser -Identity $_.SamAccountName -Remove @{Proxyaddresses="SMTP:"+$_.SamAccountName+""+$proxydomain_2}
    #добавляем SMTP:*@domain1.ru
    Set-ADUser -Identity $_.SamAccountName -Add @{Proxyaddresses="SMTP:"+$_.SamAccountName+""+$proxydomain_1}
    #добавляем smtp:*@domain2.ru
    Set-ADUser -Identity $_.SamAccountName -Add @{Proxyaddresses="smtp:"+$_.SamAccountName+""+$proxydomain_2}
    #Записи для работы Lync
    #удаляем SIP:*@domain2.ru
    Set-ADUser -Identity $_.SamAccountName -Remove @{Proxyaddresses="SIP:"+$_.SamAccountName+""+$proxydomain_2}
    #добавляем SIP:*@domain1.ru
    Set-ADUser -Identity $_.SamAccountName -Add @{Proxyaddresses="SIP:"+$_.SamAccountName+""+$proxydomain_1}
    #добавляем sip:*@domain2.ru
    Set-ADUser -Identity $_.SamAccountName -Add @{Proxyaddresses="sip:"+$_.SamAccountName+""+$proxydomain_2}
    Write-Host "Result: Added proxy address to Account"
    }
    #}


    • Изменено tesser 5 марта 2014 г. 2:31 опечатки
    • Помечено в качестве ответа KazunEditor 5 марта 2014 г. 8:04
    5 марта 2014 г. 1:38

Все ответы

  • Get-ADUser -Filter {proxyAddresses -like 'smtp:*@domain1.ru'} -Properties proxyAddresses | Foreach {
    	$user = $_
    	$user.proxyAddresses = $u.proxyAddresses -creplace "SMTP:$($_.SamAccountName)@domain1.ru","smtp:$($_.SamAccountName)@domain1.ru"
    	$user.proxyAddresses += "SMTP:$($_.SamAccountName)@domain.com"
    	Set-ADUser -Identity $user
    }

    27 февраля 2014 г. 5:20
    Отвечающий
  • Спасибо.  я сделал вот так (содрал с какого то обсуждения здесь):

    #Задаем переменные
    [string]$proxydomain_1 = "@domain1.ru"; #Основной домен (адрес для ответа)
    [string]$proxydomain_2 = "@domain2.ru"; #Дополнительные домен
    [string]$usersOU = "OU=Users,DC=Contoso,DC=RU"; #Юнит, в котором производить действия
    [string]$powersnapin = "Coexistence-Configuration"; #Directory Sync PS-Snapin name
    [string]$email = $_.SamAccountName + '$proxydomain_1'
    
    #Подключаем модуль Active Directory для PowerShell
    Import-Module ActiveDirectory
    
    #Начинаем цикличоское изменение атрибутов
    Get-ADUser -Filter "*" -SearchScope Subtree -SearchBase "$usersOU" -Properties ProxyAddresses, givenName, Surname, mail | foreach-object {
    
    Write-Host "Editing user: $_.SamAccountName"
    
    if ($_.Proxyaddresses -match $_.SamAccountName+""+$proxydomain_1)
    {
    Write-Host "Result: Proxy Address already exists; No action taken."
    }
    else
    {
    #Добавляем записи для Exchange
    #удаляем SMTP:*@domain2.ru
    Set-ADUser -Identity $_.SamAccountName -Remove @{Proxyaddresses="SMTP:"+$_.SamAccountName+""+$proxydomain_2}
    #добавляем SMTP:*@domain1.ru
    Set-ADUser -Identity $_.SamAccountName -Add @{Proxyaddresses="SMTP:"+$_.SamAccountName+""+$proxydomain_1}
    #добавляем smtp:*@domain2.ru
    Set-ADUser -Identity $_.SamAccountName -Add @{Proxyaddresses="smtp:"+$_.SamAccountName+""+$proxydomain_2}
    #Записи для работы Lync
    #удаляем SIP:*@domain2.ru
    Set-ADUser -Identity $_.SamAccountName -Remove @{Proxyaddresses="SIP:"+$_.SamAccountName+""+$proxydomain_2}
    #добавляем SIP:*@domain1.ru
    Set-ADUser -Identity $_.SamAccountName -Add @{Proxyaddresses="SIP:"+$_.SamAccountName+""+$proxydomain_1}
    #добавляем sip:*@domain2.ru
    Set-ADUser -Identity $_.SamAccountName -Add @{Proxyaddresses="sip:"+$_.SamAccountName+""+$proxydomain_2}
    Write-Host "Result: Added proxy address to Account"
    }
    #}


    • Изменено tesser 5 марта 2014 г. 2:31 опечатки
    • Помечено в качестве ответа KazunEditor 5 марта 2014 г. 8:04
    5 марта 2014 г. 1:38