我创建了一个脚本,该脚本允许在当前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 ))"}}
答案 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
}
希望这会有所帮助