需求:为CSV中无匹配AD账户的条目补充SamAccountName字段内容
修改后的PowerShell脚本及说明
问题解决思路
原脚本仅输出AD中匹配到的用户,未匹配的条目会被直接丢弃。我们需要在循环内判断AD查询结果,对未匹配的条目手动构造输出对象,填充指定文本。
修改后的脚本
Import-Csv c:\temp\DisplayName.csv | ForEach-Object { # 尝试获取AD中匹配的用户,结果存入变量 $adUser = Get-ADUser -Filter "DisplayName -eq '$($_.DisplayName)'" -Properties Name, SamAccountName, Company -ErrorAction SilentlyContinue if ($adUser) { # 找到匹配用户时,输出AD用户的属性 $adUser | Select-Object Name, SamAccountName, Company } else { # 未找到匹配用户时,构造自定义对象填充指定内容 [PSCustomObject]@{ Name = $_.DisplayName SamAccountName = "To be removed" Company = $null # 若需要可改为"Unknown"等自定义内容 } } } | Export-CSV -path C:\temp\SamAccountName.csv -NoTypeInformation
关键改动说明
- 添加
-ErrorAction SilentlyContinue:避免未找到用户时抛出冗余错误信息 - 用变量
$adUser存储查询结果,通过if ($adUser)判断是否找到匹配用户 - 未匹配时,用
[PSCustomObject]构造符合输出格式的对象,确保CSV包含所有原始条目
内容的提问来源于stack exchange,提问作者kill9all
相关产品推荐
相关产品推荐

