【发布时间】:2018-12-14 19:28:43
【问题描述】:
我们有一个 Powershell 脚本,可以使用从 Active Directory 中提取的数据自动创建 Outlook 签名。
目前我们正在使用以下行提取电话号码:
Update-Sig -attribute "TelephoneNumber" -value "$([string]($ADUser.TelephoneNumber))"
这将返回一个格式为 +61112345678 的数字。
我想做的是更改该字符串,使其始终采用带空格的 +61 1 1234 5678 格式。
这可能吗?我在想我需要获取字符串,将其转换为变量,然后在一定数量的字符后添加一个空格。但我不确定该怎么做。
谢谢
【问题讨论】:
-
由于字符限制,我将在两个 cmets 中执行此操作。
TelephoneNumber是 AD 用户的字符串属性。事实上,该属性的 PowerShell 名称是OfficePhone,而 LDAP 名称是telephoneNumber。由于这是一个字符串,因此不知道它在某些时候以什么格式输入。您已经测试并看到它为一个用户返回了+61112345678,但这并不意味着这种格式适用于所有用户.. -
恐怕你的代码必须决定字符串值是否以
+符号开头,所以后面的应该是国家代码。但是,由于Country Calling Codes 的列表非常广泛,因此很难定义正确的代码,但如果幸运的话,您的大多数用户都在澳大利亚(代码 61)。在伪代码中,您检查字符串是否以+开头,然后使用$number -replace '\D',''从剩余部分中删除所有非数字并使用@Lee_Dailey 答案格式化。 -
嗨@Theo,是的,所有数字都以+612开头。
标签: powershell outlook active-directory