Я видел много замечательных постов по этому поводу, но мне было очень трудно адаптировать его для моей ситуации.
У меня есть подразделение, в котором я хочу форматировать все номера телефонов и мобильных телефонов по-разному в соответствии с требованиями организации.Из того, что я могу сказать, в настоящее время существует 2 формата телефонных номеров
03XXXXXXXX
+61 3 XXXX XXXX
Вторая версия - это то, что нам нужнодля всех телефонных номеров.
Для мобильных устройств в настоящее время у нас есть 3 формата
04XXXXXXXX
04XX XXX XXX
+61 4XX XXX XXX
Я считаю хитрым то, что все номера телефонов должны начинаться с +61 3
, а номера мобильных телефонов - с +61 4
Большинство чисел в AD имеют в начале 0
, который нужно удалить.
Так что пример - 0399998888
превратится в +61 3 9999 888
Мобильный телефон - 0411333555
превратится в +61 411 333 555
Это то, что у меня есть для телефонных номеров, но оно не работает
Get-ADUser -SearchBase "OU" -Filter "telephoneNumber -like '03*'" -Properties telephoneNumber | select name, telephoneNumber
Get-ADUser -SearchBase "OU" -Filter "telephoneNumber -like '03*'" -Properties telephoneNumber | Where { $_.telephoneNumber -match '^\\d{10}\$'} | Foreach {Set-ADUser $_ -Replace @{TelephoneNumber=( $_.telephoneNumber -replace '^\(\d{1})\)(\s\d{4})-(\d{4})', '+61 $1 $2 $3') } -whatIf }
Get-ADUser -SearchBase "OU" -Filter "telephoneNumber -like '03*'" -Properties telephoneNumber | Where { $_.telephoneNumber -match '^\\d{10}\$'} | Foreach {Set-ADUser $_ -Replace @{TelephoneNumber=( $_.telephoneNumber -replace '^\(\d{1})\)(\s\d{4})-(\d{4})', '+61 $1$2 $3') } }
Get-ADUser -SearchBase "OU" -Filter "telephoneNumber -like '+61*'" -Properties telephoneNumber | select name, telephoneNumber
Любая помощь будет принята с благодарностью !!
РЕДАКТИРОВАТЬ: Это код, который я использовал, чтобы заставить его работать
Get-ADUser -SearchBase "OU" -Filter "telephoneNumber -like '03*'" -Properties telephoneNumber |
ForEach-Object {
$PhoneNumberRaw = $_.telephoneNumber -replace '^0' -replace '^\+61' -replace '\s' -as [LONG]
$newPhoneNumber = if ($PhoneNumberRaw -match '^3') {
"+61 {0:# #### ####}" -f $PhoneNumberRaw
}
else {
"+61 {0:### ### ###}" -f $PhoneNumberRaw
}
[PSCustomObject]@{
Name = $_.Name
TelephoneNumber = $newPhoneNumber
}
$Users = Get-ADUser -SearchBase "OU" -Filter "telephoneNumber -like '03*'" -Properties telephoneNumber, distinguishedName
ForEach ($User In $Users)
{
$DN = $User.distinguishedName
Set-ADUser -Identity $DN -OfficePhone $newPhoneNumber
}
}