【发布时间】:2020-07-27 17:42:40
【问题描述】:
我正在 Powershell 中编写一个新脚本,我想问一下是否有人知道将字符串中的所有“非英语”字母替换为英文字母的方法或函数。其原因在于 New-ADUser 功能,其中 AD 只接受 SamAccountName 和 UserPrincipalName 的英文字母。
字符串示例
$Name= "TRẦN NGÔ ỬNG HẠNH"
会有各种非英文字母的名称,包括亚洲、欧洲等,因此使用简单的 If-Then Replace 是不够的。
if ($Name= -like "*Ầ*")
{
$Name = $Name.replace('Ầ','A')
}
【问题讨论】:
-
我可以建议不要自动处理它,而是使用正则表达式来检查它是否是 a-z A-Z 0-9 并将其交还给输入输入的人。由于几乎有无限的非拉丁字符,其中许多字符无法翻译成英文。因此最好让用户使用适当的错误消息来解决问题。
-
和另一个旁注,例如像 ÅÄÖ 这样的斯堪的纳维亚字母翻译成两个字符。 Å = AA,Ä = AE,Ö = OE
-
您好,这是我们的 HR 系统和 AD 之间的集成。人力资源系统的供应商告诉他们不可能将所有用户翻译成英文字母。在我们使用 .replace 之前,但在这种情况下,它仅适用于使用 ØÆÅ 的挪威用户,因此这是一项简单的任务。我可以按照您的建议将其发回,但这将导致更多的员工被送回进行更正,而不是创建的用户。我希望为此提供一个功能,如果没有,我想我将不得不告诉他们事实,他们需要翻译成英文。
-
看看previous question 是否适合你。正如@DanielBjörk 指出的那样,请注意名称冲突。音译规则复杂且高度依赖文化。此外,请参阅有关 people's names 的常见错误假设列表。
标签: powershell