Powershell-将字符串中的非英文字母替换为英文字母

时间:2020-07-27 08:15:08

标签: powershell

我正在用Powershell开发一个新脚本,我想问问是否有人知道将字符串中的所有“非英语”字母替换为英语字母的方法或功能。这样做的原因是由于New-ADUser函数,其中AD仅接受SamAccountName和UserPrincipalName的英文字母。

一个字符串的例子是

$Name= "TRẦN NGÔ ỬNG HẠNH"

将会有各种各样的非英语字母的名称,包括亚洲,欧洲等,因此仅使用If-Then Replace就不能满足要求。

if ($Name= -like "*Ầ*")
{
$Name = $Name.replace('Ầ','A')
}

1 个答案:

答案 0 :(得分:0)

您好DanielBjörk和vonPryz,

感谢您的答复,我从建议的链接中找到了解决方案。 我还阅读了有关人员姓名的文章,在这种情况下,用户仍可以使用其原始名称作为显示名称,但是由于Microsoft使得在AD中很难使用“英语”以外的字符,因此我们需要进行转换他们的名字。

解决方案(这将适用于到目前为止已测试的亚洲名称)对于斯堪的纳维亚人,我们仍然必须添加.replace。

function Remove-Diacritics {
param ([String]$src = [String]::Empty)
  $normalized = $src.Normalize( [Text.NormalizationForm]::FormD )
  ($normalized -replace '\p{M}', '')
}

$Name = Remove-Diacritics ("TRẦN NGÔ ỬNG HẠNH")


If ($Name -match "[a-z]"){
Write-host "$Name - OK"
}Else{
Write-host "$Name - Send back"
}