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

如何在PowerShell的AD用户查询记录中添加对应AD服务器名称

修改后的PowerShell脚本及说明

核心修改点

  • 将分散的服务器名整理成数组,简化重复代码
  • 在每条用户记录中添加ServerName字段,明确用户所属AD服务器
  • 可选:合并所有查询结果后一次性导出,提升效率

修改后的完整脚本

$paramlist = @("EmailAddress", "distinguishedname", "name", "GivenName", "surname", "SamAccountName",  "Userprincipalname", "Department", "title", "manager", "displayName", "company", "mail")
$outputfile = "C:\AD_Listing_$(get-date -f yyyy-MM-dd).csv"
# 把所有AD服务器名放到数组里,方便循环处理
$adServers = @("Canada.bz", "Europe.bz", "US.bz", "UK.bz", "Asia.bz")

# 初始化空数组存储所有用户数据
$allUserRecords = @()

foreach ($server in $adServers) {
    # 查询当前服务器的AD用户,并添加ServerName字段
    $userRecords = Get-ADUser -Server $server -Filter * -Properties $paramlist | 
        Select-Object $paramlist, @{Name='ServerName'; Expression={$server}}
    # 合并当前服务器的用户数据到总集合
    $allUserRecords += $userRecords
}

# 一次性导出所有数据到CSV
$allUserRecords | Export-Csv -Path $outputfile -NoTypeInformation

关键代码解释

  • @{Name='ServerName'; Expression={$server}}:这是PowerShell自定义计算属性的写法,Name指定新增列的名称,Expression定义该列的取值逻辑(这里直接取当前循环的服务器名)
  • 用数组$adServers统一管理服务器列表,配合foreach循环避免重复代码,后续新增/删除服务器只需修改数组即可
  • 先收集所有数据再一次性导出,比多次使用-Append更高效,也能避免CSV格式可能出现的异常

兼容原逻辑的替代写法(保留分次Append)

如果习惯原脚本分次导出的方式,可按以下修改:

$paramlist = @("EmailAddress", "distinguishedname", "name", "GivenName", "surname", "SamAccountName",  "Userprincipalname", "Department", "title", "manager", "displayName", "company", "mail")
$outputfile = "C:\AD_Listing_$(get-date -f yyyy-MM-dd).csv"

# 删除已存在的输出文件,避免残留旧数据
if (Test-Path $outputfile) { Remove-Item $outputfile }

$Server = "Canada.bz"
Get-ADUser -Server $server -Filter * -Properties $paramlist | Select-Object $paramlist, @{Name='ServerName'; Expression={$server}} | Export-Csv -Path $outputfile -NoTypeInformation
$Server = "Europe.bz"
Get-ADUser -Server $server -Filter * -Properties $paramlist | Select-Object $paramlist, @{Name='ServerName'; Expression={$server}} | Export-Csv -Append -Path $outputfile
$Server = "US.bz"
Get-ADUser -Server $server -Filter * -Properties $paramlist | Select-Object $paramlist, @{Name='ServerName'; Expression={$server}} | Export-Csv -Append -Path $outputfile
$Server = "UK.bz"
Get-ADUser -Server $server -Filter * -Properties $paramlist | Select-Object $paramlist, @{Name='ServerName'; Expression={$server}} | Export-Csv -Append -Path $outputfile
$Server = "Asia.bz"
Get-ADUser -Server $server -Filter * -Properties $paramlist | Select-Object $paramlist, @{Name='ServerName'; Expression={$server}} | Export-Csv -Append -Path $outputfile

注意:建议添加-NoTypeInformation参数,避免CSV文件开头出现#TYPE Selected.Microsoft.ActiveDirectory.Management.ADUser这类无用信息。

内容的提问来源于stack exchange,提问作者Erik in Wpg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 23:33:17