【发布时间】:2020-07-31 23:32:12
【问题描述】:
我看到了很多关于这个的很棒的帖子,但是很难根据我的情况来调整它。
我有一个 OU,我想根据组织的要求以不同的方式格式化所有电话和手机号码。据我所知,目前有两种电话号码格式
03XXXXXXXX+61 3 XXXX XXXX
第二个版本是我们需要的所有电话号码。
对于移动设备,我们目前有 3 种格式
04XXXXXXXX04XX 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
}
}
【问题讨论】:
标签: powershell