传真号码更新脚本,如何反向?

时间:2019-01-25 17:46:04

标签: powershell

我创建了一个脚本,该脚本允许在当前AD传真号码的开头添加值“ 1-”。我在测试环境中运行此脚本,脚本完全按照我的要求运行。我正在寻找故障回复,但似乎无法获取该脚本来删除“ 1-”,而是从传真的开头和末尾删除了1,因此输出看起来像这样:“- (###)-###-###”,而不是看起来像正确的数字格式“(###)-###-####”

Get-ADUser -Filter {facsimileTelephoneNumber -like "*"} -Properties facsimileTelephoneNumber| foreach {Set-ADUser -Identity $_ –replace @{facsimileTelephoneNumber="1-$($_.facsimileTelephoneNumber)"}}


Get-ADUser -Filter {facsimileTelephoneNumber -like "*"} -Properties facsimileTelephoneNumber| foreach {Set-ADUser -Identity $_ –replace @{facsimileTelephoneNumber="$(($_.facsimileTelephoneNumber).Substring(1,($_.facsimileTelephoneNumber.length) -2 ))"}}

1 个答案:

答案 0 :(得分:1)

在您之前的问题中,my answer是在传真号码上添加了1- ,这是您可以将其取反的方法。

在您的问题中,我看到您正在尝试以单行代码的方式完成所有操作,从而跳过了逐步检查代码的所有可能性。使用问题中的第一个oneliner还会在1-前添加找到的每个传真号码,无论是否需要。

特别是在刚启动PowerShell时,将内容写出来是一件好事。

话虽如此,这是从传真号码中删除前导1-的代码

# Remove leading '1-' from ADUsers faxnumbers

Import-Module ActiveDirectory

# get all users in the specified OU that have a fax number starting with '1-'
Get-ADUser -LdapFilter '(facsimileTelephoneNumber=1-*)' -SearchBase 'OU=UserAccounts,DC=YourDomain,DC=com' -Properties 'Fax' | ForEach-Object {
    # using Substring() to remove the first two characters. See: https://ss64.com/ps/substring.html
    $newFax = ($_.Fax).Substring(2)
    Write-Host "Setting Faxnumber to '$newFax' for user $($_.Name)"
    # remove the '-WhatIf' if you are sure the number may be changed
    $_ | Set-ADUser -Fax $newFax -WhatIf
}

希望这会有所帮助