PowerShell меняет адреса прокси в Active Directory с помощью Set-ADUser - PullRequest
0 голосов
/ 25 июня 2018

У меня есть небольшой код, который я не знаю, должен ли он работать, потому что я нахожусь на работе в данный момент, и прокси-адреса создаются только в производстве, и я боюсь, что код не будет работать, когда я использовать его в производстве.

Итак, логика кода: получение прокси-адресов - если адрес прокси начинается с "smtp:", он изменится на "smtp:d_"

Например, "smtp:test@gmail.com" изменится на "smtp:d_test@gmail.com"

Вот мой код:

#### proxy adresses
$Obj_CompteMPOP3 = Get-ADUser $login -Properties proxyaddresses -server $serverSource
$NewProxyAddresses = @() #new array of proxy addresses

$Proxies = $Obj_CompteMPOP3.proxyaddresses #get the proxy addresses of the LDAP object
foreach ($Proxy in $Proxies) {
    if ($Proxy.Substring(0, 5) -like 'smtp:*') #if the address starts with smtp:
    {
        $ProxyPrefixe = $Proxy.Substring(0, 5)
        $NewProxy = "$ProxyPrefixe$D_$($proxy.Substring(5))" #make the new proxy address with the format "smtp:" -> "smtp:d_"
        $MPOP3_NewProxyAddresses += $NewProxy #add the value to the new array of proxy addresses

        Set-ADUser $login -Replace @{ProxyAddresses = $MPOP3_NewProxyAddresses} -Server $serverSource -Credential $CredActivateSIRHMPOP3 #set the new addresses with the new array
    }

}

Строка, в которой я совсем не уверен, это set-aduser. Можно ли это использовать? Мне кажется логичным, учитывая, что get-aduser возвращает вам массив

Заранее спасибо, ребята!

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

После нескольких попыток я получил эту работу, чтобы заменить неправильные символы в атрибуте массива proxuAddresses:

$pa = Get-ADObject "$idistinguishedname" -Properties proxyAddresses | select proxyAddresses
$pa | foreach {If ($iVALUE -ceq $pa[0]){Set-ADObject "$idistinguishedname" -replace @{proxyAddresses=$iUPDATE}}}

$ iVALUE и $ iUPDATE пришли как входные данные из CSV-файла, который я экспортировал и тщательно отредактировал после запуска инструмента IdFix против моей AD, чтобы исправить несоответствия. Инструмент IdFix должен был это сделать, но он допустил ошибку и должен был написать сценарий PS, чтобы завершить то, что инструмент не смог.

0 голосов
/ 25 июня 2018

Заданный пользователь ad будет работать как команда, но вам нужно добавить значение в виде массива.

Исходя из моего опыта, когда мы меняли наш почтовый сервер, мне приходилось экспортировать все адреса пользователей и добавлять их в атрибут адреса прокси-сервера с основным SMTP.

То, что я сделал, было:

Get-ADUser -Filter {(Enabled -eq $true) -and (sAMAccountType -ne 805306370) -and (cn -ne "Administrator")} -SearchBase "CN=,DC=,DC=,DC=" -Properties proxyAddresses |
Select Name, GivenName, Surname, Enabled, SamAccountName, Title,  `
@{L='ProxyAddress_1';E={$_.proxyaddresses[0]}}, `
@{L='ProxyAddress_2';E={$_.ProxyAddresses[1]}}, `
@{L='ProxyAddress_3';E={$_.ProxyAddresses[2]}}, `
@{L='ProxyAddress_4';E={$_.ProxyAddresses[3]}}, `
@{L='ProxyAddress_5';E={$_.ProxyAddresses[4]}}, `
@{L='ProxyAddress_6';E={$_.ProxyAddresses[5]}}, `

Export-Csv -Path "Your path\Your filename.csv" -NoTypeInformation -Encoding UTF8 -Delimiter "|"

Я использую | как разделитель, поэтому мне не нужно заботиться, есть ли или; в данных я экспортирую. Затем измените адреса с помощью команды замены и установите свойства пользователей.

$Temp = Import-Csv -Path "Your path\Your filename.csv" -Encoding Default -Delimiter '|'
ForEach ($User in $Temp) {
Set-ADUser -Identity $User.SamAccountName -Clear proxyaddresses
Set-ADUser -Identity $User.SamAccountName -Add @{proxyAddresses = $User.ProxyAddress_1}
Set-ADUser -Identity $User.SamAccountName -Add @{proxyAddresses = $User.ProxyAddress_2}
Set-ADUser -Identity $User.SamAccountName -Add @{proxyAddresses = $User.ProxyAddress_3}
Set-ADUser -Identity $User.SamAccountName -Add @{proxyAddresses = $User.ProxyAddress_4}
Set-ADUser -Identity $User.SamAccountName -Add @{proxyAddresses = $User.ProxyAddress_5}
}

Таким образом, команда Set-ADUser работает, но вы должны поместить -Add и установить это значение в многозначный атрибут.

Надеюсь, это поможет вам.

Редактировать: Также вы можете увидеть команду -Clear перед добавлением новых значений, потому что если у вас слишком много почтовых псевдонимов у одного пользователя, вы можете оказаться в сложной ситуации.

...