Лучший отвечающий
AD добавление одного значения в другое поле (ipPhone = othertelephone).

Вопрос
-
Добрый день!
Пару лет уже не касался 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