PowerShell修改统一组显示名:已存在-Yammer后缀则跳过避免重复追加
实现方案
核心修复点:
- 追加后缀前增加存在性校验,仅当显示名末尾不存在
-Yammer后缀时才执行拼接,避免重复追加 - 修正原代码语法错误:原代码中设置
HiddenFromAddressListsEnabled的代码块在ForEach-Object循环体外,会导致执行逻辑异常,需要移入循环内 - 可移除不必要的CSV中间文件步骤,直接通过管道完成全量操作,提升执行效率
推荐无临时文件版本
直接在内存中完成组遍历和配置修改,不需要落地临时CSV文件,代码更简洁:
Get-UnifiedGroup -ResultSize Unlimited | Where-Object { $_.GroupSku -eq "Yammer" } | ForEach-Object { # 校验显示名是否已带目标后缀 if ($_.DisplayName -notlike "*-Yammer") { $newDisplayName = $_.DisplayName + "-Yammer" Set-UnifiedGroup -Identity $_.Id -DisplayName $newDisplayName } # 统一配置地址列表可见性 Set-UnifiedGroup -Identity $_.Id -HiddenFromAddressListsEnabled $false }
保留CSV导出的版本
如果需要留存Yammer组的清单做审计,可以保留原有导出CSV的流程,修复后的代码如下:
Get-UnifiedGroup -ResultSize Unlimited | Where-Object { $_.GroupSku -eq "Yammer" } | Export-Csv "C:\Temp\yammerGroup.csv" -NoTypeInformation Import-CSV "C:\Temp\yammerGroup.csv" | ForEach-Object { # 后缀存在性校验,已存在则跳过追加 if ($_.DisplayName -notlike "*-Yammer") { Set-UnifiedGroup -Identity $_.id -DisplayName ($_.DisplayName + "-Yammer") } Set-UnifiedGroup -Identity $_.id -HiddenFromAddressListsEnabled $False }
校验逻辑说明:使用
-notlike "*-Yammer"匹配规则,仅当字符串末尾为-Yammer时判定为已追加后缀,不会因为显示名中间包含相同字符出现误判,重复执行脚本也不会出现多次拼接后缀的问题。
内容的提问来源于stack exchange,提问作者wolfmaster74
相关产品推荐
相关产品推荐

