PowerShell взять последние 4 символов
Нужно из телефонного номера вырезать последние четыре цыфры добавочного номера и вставить их в аргемент ip телефон. Сам телефон записан так +7 495 xxxxxxx-xxxx. Пробовал -replace '*.-','', но без успешно
Get-ADUser -SearchBase "DC=omnicare,DC=int" -Filter "telephoneNumber -like '+7 495*'" -Properties telephoneNumber |
ForEach-Object {
$User = $_
$telephoneNumber = $User.telephoneNumber -replace '*.-',''
Set-ADUser -Identity $User.DistinguishedName -Replace @{IPPhone=$IPPhoneNumber}
}
Ответы (2 шт):
Парочку способов как бы это сделал, в примере использовал стринг:
$telephoneNumber = "+7 495 1234567-8910"
Первый вариант, преобразовать в массив, используя разделитель - и использовать второй элемен массива с индексом 1
$telephoneNumber.Split("-")[1]
PS C:\Users\Root> $telephoneNumber.Split("-")[1]
8910
Второй вариант, удалить необходимое количество символов от начала строки, в данном случае 15
$telephoneNumber.Substring(15)
PS C:\Users\Root> $telephoneNumber.Substring(15)
8910
Можно еще так же распечатать с конца 4 последних символа
$OFS=''; [string]$telephoneNumber[-4..-1]
#Вернуть OFS при необходимости, по умолчанию является пробелом
$OFS = " "
$OFS=''; [string]$telephoneNumber[-4..-1]
8910
Для чего нужно менять системную переменную OFS. Связано это с тем, что строка преобразовывается в массив и печатаются элементы с конца строки, т.е. каждый элемент при печати будет на следующей строке, поэтому мы тип данных [string] и меняем разделитель на пустоту, иначе получим элементы перечисленные через пробел 8 9 1 0
до кучи
(([regex]"\d{4}$").Matches("+7 495 1234567-8910")).Value
Для решения данной задачи можно использовать регулярные выражения.
Регулярные выражения
Паттерн "\d{4}$" означает “точно четыре цифры за которыми идет окончание строки”
Обращение к объекту в скобках позволят обратиться к создаваемому объекту сразу, без его объявления ([regex]“\d{4}$”) получаем объект “System.Text.RegularExpressions“, обращаемся к его методу Matches получаем экземпляр класса ”Match”, в котором содержаться строки совпадающие с шаблоном, заключаем его в скобки и забираем свойство “Value” профит.