none
AD добавление одного значения в другое поле (ipPhone = othertelephone). RRS feed

  • Вопрос

  • Добрый день!

    Пару лет уже не касался PSH, совсем все из головы вылетело. Суть простая, нужно взять данные из одного значения и поместить в другое, наподобие:

    $Users= Get-ADUser - filter (othertelephone -eq "")
    Foreach ($User in $Users) -Add @{othertelephone=ipPhone}

    Тестовой среды нет, нужно сразу в продуктив запихнуть!

    Благодарю за помощь. 

    25 марта 2016 г. 11:38

Ответы

  • Get-ADUser -filter "(-not (othertelephone -like '*')) -and ipphone -like '*'" -Properties ipphone,othertelephone | Foreach {
    	Set-ADUser $_ -Replace @{othertelephone= $($_.ipphone)}
    }

    • Помечено в качестве ответа Oleg.A 25 марта 2016 г. 13:18
    25 марта 2016 г. 11:52
    Отвечающий

Все ответы

  • Get-ADUser -filter "(-not (othertelephone -like '*')) -and ipphone -like '*'" -Properties ipphone,othertelephone | Foreach {
    	Set-ADUser $_ -Replace @{othertelephone= $($_.ipphone)}
    }

    • Помечено в качестве ответа Oleg.A 25 марта 2016 г. 13:18
    25 марта 2016 г. 11:52
    Отвечающий
  • Get-ADUser -filter "(-not (othertelephone -like '*')) -and ipphone -like '*'" -Properties ipphone,othertelephone | Foreach {
    	Set-ADUser $_ -Replace @{othertelephone= $($_.ipphone)}
    }

    Kazun, рад Вас видеть! :)

    Две вещи:

    1. Почему именно Replace?

    2. othertelephone= $($_.ipphone)

    $_.ipphone понятно - берется текущее значение этого поля в каждом цикле, но вот просто $ перед скобочкой? Я пробовал 

    -ADD @{othertelephone=($_.ipphone)}

    Не вышло! :)



    • Изменено Oleg.A 25 марта 2016 г. 12:12
    25 марта 2016 г. 12:11
  • 1) Мне нравиться, т.к. othertelephone - массив, поэтому чтобы все заменить Clear&Add, а тут Replace.

    2) Мне нравиться, можно othertelephone=$_.ipphone, можно othertelephone=($_.ipphone) , othertelephone=$($_.ipphone). Все три отработают и приведут к одному результату.

    У пользователя othertelephone - пусто,ipphone - 1234567

    PS C:\Users\Administrator> Get-ADUser -filter "(-not (othertelephone -like '*')) -and ipphone -like '*'" -Properties ipp
    hone,othertelephone
    
    DistinguishedName : CN=Ivan Ivanov,CN=Users,DC=contoso,DC=com
    Enabled           : True
    GivenName         : Ivan
    ipphone           : 1234567
    Name              : Ivan Ivanov
    ObjectClass       : user
    ObjectGUID        : 251404af-253c-4906-8523-20c332542ea0
    SamAccountName    : iivanov
    SID               : S-1-5-21-4274468572-2620296644-2347371306-1106
    Surname           : Ivanov
    UserPrincipalName : iivanov@contoso.com

    Заполняем othertelephone= $($_.ipphone)}:

    PS C:\Users\Administrator> Get-ADUser -filter "(-not (othertelephone -like '*')) -and ipphone -like '*'" -Properties ipp
    hone,othertelephone | Foreach {
    >> Set-ADUser $_ -Replace @{othertelephone= $($_.ipphone)}
    >> }

    Ошибок нет, все успешно:

    PS C:\Users\Administrator> Get-ADUser iivanov -prop othertelephone,ipphone | select name,othertelephone,ipphone
    
    name                                    othertelephone                          ipphone
    ----                                    --------------                          -------
    Ivan Ivanov                             {1234567}                               1234567


    25 марта 2016 г. 12:33
    Отвечающий
  • Кажется все верно, спасибо большое! :)

    25 марта 2016 г. 13:18
  • И кстати, просто

    "1) Мне нравиться, т.к. othertelephone - массив, поэтому чтобы все заменить Clear&Add, а тут Replace."

    У нас идет выборка же по фильтру 

    -filter "(-not (othertelephone -like '*')) -and ipphone -like '*'" 
    Т.е. по факту, тут Replace`у делать будет нечего, т.к. поле Other у нас только пустое в массиве. :)

    25 марта 2016 г. 13:25
  • Еще просьба!

    У нас может быть AD ролями Quest порезана, т.е. не получится выполнить через стандартные кмндлеты шелла... Сейчас попробую сам, составить, но если что... :) 

    • Изменено Oleg.A 25 марта 2016 г. 13:57
    25 марта 2016 г. 13:40
  • Лень проверять, но как-то так:

    Get-QADUser -LdapFilter "(&(!othertelephone=*)(ipphone=*))" -IncludedProperties ipphone,othertelephone | Foreach { Set-QADUser $_ -objectAttributes @{otherTelephone=$($_.ipphone)}

    }


    25 марта 2016 г. 14:03
    Отвечающий
  • Хм... я смотрел в сторону 

    Where-Object othertelephone -NotLike ""

    Но судя по всему Ваш более "легкий", спасибо еще раз! :)

    25 марта 2016 г. 14:52