PowerShell导出CSV前如何去除重复ADUser字段值仅保留首次出现记录
解决方案
你可以在生成结果对象时判断当前用户名是否和上一条一致,仅第一条保留用户名,后续相同用户的ADuser字段赋值为空即可,以下是可直接使用的代码:
方案1:修改原有循环直接生成符合要求的结果
$ADResult = @() # 用于记录上一条的用户名 $lastADUser = $null foreach ($group in $ADGroups) { $currentUserName = $user.name $ADResult += [PSCustomObject]@{ ADGroup = $group.name ADuser = if ($currentUserName -ne $lastADUser) { $currentUserName } else { '' } } # 更新上一条用户名为当前值,供下一次循环判断 $lastADUser = $currentUserName $group = $null }
方案2:已有原始结果的情况下,二次处理生成目标格式
如果你已经生成了全量填充ADuser的$ADResult数组,不想修改原有循环逻辑,可以直接对结果做二次处理:
$lastADUser = $null $exportResult = $ADResult | ForEach-Object { if ($_.ADuser -eq $lastADUser) { $_.ADuser = '' } else { $lastADUser = $_.ADuser } $_ }
处理后的$ADResult/$exportResult直接导出CSV即可得到你需要的效果,即使后续存在多个不同用户的场景,该逻辑也会自动为每个新用户的第一条记录填充用户名,后续同用户记录留空。
内容的提问来源于stack exchange,提问作者dcaz
相关产品推荐
相关产品推荐

