Кредиты для этого должны идти на @Lee_Daily из-за формата строки.Вы можете сделать что-то вроде ниже, чтобы отформатировать ожидаемые числа '+61', и если в свойстве есть что-то еще, оно распечатает его, чтобы вы могли проверить.
$phone = '+61112345678'
# test if the string starts with a `+` or at least the digits `61`
if ($phone.Trim() -match '^(\+|61)') {
$phone = '+{0:## # #### ####}' -f ([int64]($phone -replace '\D',''))
Write-Host "Formatted TelephoneNumber: '$phone'" -ForegroundColor Green
}
else {
# not a '+61' number. Write it out so you can check/correct manually
Write-Host "Unexpected TelephoneNumber: '$phone'" -ForegroundColor Red
}
ОБНОВЛЕНИЕ Чтобы ответить на ваш последний комментарий, действительно, приведенный выше код не устанавливает недавно отформатированный номер телефона в атрибуте ADUser.
Я думал, что вопрос был оформатирование, а не настройка.
Хотя ваша ссылка не работает, установить ее в AD было бы достаточно просто.
Кажется, у вас уже есть объект с именем $ADUser
, и я полагаю, что это произошло из более раннего вызова Get-ADUser
ты сделал.Устанавливая отформатированный номер, полученный с помощью приведенного выше кода, вы можете просто обновить номер пользователя, используя, например:
# using piping the user object to Set-ADUser
$ADUser | Set-ADUser -OfficePhone $phone
# using one of the users properties as 'Identity' and update using the LDAP attribute name
# for parameter Identity, the cmdlet accepts either the DistinguishedName, objectGUID, objectSid, or the SamAccountName
Set-ADUser -Identity $ADUser.DistinguishedName -Replace @{telephoneNumber = $phone }
ps. Существует также атрибут с именем HomePhone
(имя LDAP homePhone
), ноэто не тот, который вы используете в своем коде.
Надеюсь, это поможет