You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell数组排序后使用Sort -Unique无法去除重复值问题

PowerShell Sort -Unique 去重失效解决方案

问题根因

你遇到的排序后仍有重复项的问题,核心是两种场景导致:

  • 获取到的姓名字符串前后存在空格、制表符等不可见字符,肉眼识别内容一致但实际字符序列不同,Sort -Unique会判定为不同值
  • $fullnames变量未在循环前显式初始化,之前运行脚本残留的历史值和本次查询结果混合,或者变量类型异常导致去重逻辑失效

修复步骤

1. 常规修复方案

完整可运行的修正后代码如下:

# 显式初始化空数组,避免历史值残留
$fullnames = @()
foreach ($pute in $puters){
    $user = get-loggedinuser -computer $pute.name | select -expandproperty username
    # 获取AD用户名后主动去除首尾空白字符
    $fullname = (get-aduser $user | select -expandproperty name).Trim()
    $fullnames += $fullname
}
# 二次清理空白后再排序去重
$fullnames = $fullnames | ForEach-Object { $_.Trim() } | Sort-Object -Unique

2. 极端场景兼容

如果仍存在重复,说明姓名中包含其他不可见特殊字符,可以在Trim的基础上额外添加字符过滤逻辑:

# 过滤非中英文、空格的特殊字符后再去重
$fullname = [regex]::Replace((get-aduser $user | select -expandproperty name), "[^\u4e00-\u9fa5a-zA-Z\s]", "").Trim()

内容的提问来源于stack exchange,提问作者SpaceCoyote300

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:15:08