首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更改用户DisplayName列表中的3个字符

更改用户DisplayName列表中的3个字符
EN

Stack Overflow用户
提问于 2020-03-10 20:44:53
回答 1查看 70关注 0票数 0

我正在尝试更改用户列表的3个字符。所有这些用户在他们的DisplayName (ABcD-DisplayName)上都附加了一些内容,我想将其更改为我要使用的内容(ABcD-ICC

Set-aduser -Identity $_.SamAccountName -Replace @{DisplayName="$_.Surname, $_.GivenName (ABcD-ICC)"}

但我唯一要改变的就是最后的国际刑事法院。有没有更简单的方法呢?

EN

回答 1

Stack Overflow用户

发布于 2020-03-11 01:28:01

为此,您可以使用-replace运算符,并根据需要使其变化:

代码语言:javascript
运行
复制
# Replaces three characters before a final character of )
$replace = 'ICC'
Set-aduser -Identity $_.SamAccountName -Replace @{DisplayName=$_.DisplayName -replace '.{3}(?=\)$)',$replace}

说明:

-replace使用正则表达式匹配,并将匹配替换为替换字符串。替换字符串可以是文本字符串、包含变量或与regex部分匹配的捕获组。

.可以是任何单个字符。{3}恰好匹配三次。(?=)是一个肯定的先行断言,这意味着未来的字符与当前位置的内部字符相匹配。Lookahead允许未捕获的匹配,因此不会输出也不会被替换。$表示字符串的末尾。\)是对文字)进行转义的反斜杠。由于()在正则表达式中有特殊含义,因此必须对它们进行转义。

有时你可能不知道最后一个字符。在这种情况下,您可以使用以下代码替换最后一个任意字符之前的三个字符:

代码语言:javascript
运行
复制
$replace = 'ICC'
Set-aduser -Identity $_.SamAccountName -Replace @{DisplayName=$_.DisplayName -replace '.{3}(?=.$)',$replace}

如果要替换最后三个字符,而不考虑它们的值,可以执行以下操作:

代码语言:javascript
运行
复制
$replace = 'ICC'
Set-aduser -Identity $_.SamAccountName -Replace @{DisplayName=$_.DisplayName -replace '.{3}$',$replace}

如果想要替换最后三个连续的字母字符,即使它们远离字符串的结尾,也可以这样做:

代码语言:javascript
运行
复制
$replace = 'ICC'
Set-aduser -Identity $_.SamAccountName -Replace @{DisplayName=$_.DisplayName -replace '[a-z]{3}(?=[^a-z]*$)',$replace}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60617952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档