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

如何在PowerShell中导出无引号且包含空白列的Get-ADUser结果至CSV文件

如何在PowerShell中导出无引号且包含空白列的Get-ADUser结果至CSV文件

嘿,我完全懂你的困扰——旧版PowerShell的Export-CSV确实死脑筋,非要加引号,而且工具还挑格式,不能事后改文件对吧?别着急,咱们直接从源头解决这两个问题:

一、搞定「去掉所有引号」的问题

因为你用的是PowerShell 7以下的版本,没有-UseQuotes参数,Export-CSV会强制给字段加引号(尤其是空值或带特殊字符的字段)。这时候咱们干脆不用Export-CSV,手动构建CSV内容,完全掌控格式:

二、同时添加「空白列」

要加空白列很简单,在自定义属性里直接定义一个返回空字符串的字段就行,后续拼接的时候自然会输出空的列。

完整的脚本示例

# 1. 定义要输出的字段(包含空白列)
$outputProperties = @(
    @{Name="FirstName"; Expression={$_.GivenName}},
    @{Name="LastName"; Expression={$_.SurName}},
    @{Name="UserID"; Expression={$_.EmployeeId}},
    @{Name="Blank"; Expression={""}} # 这里就是我们要的空白列
)

# 2. 获取启用的AD用户,只加载需要的属性(别用-Properties *,太浪费性能)
$adUsers = Get-ADUser -Filter {Enabled -eq $true} -Properties GivenName, SurName, EmployeeId | 
           Select-Object $outputProperties

# 3. 构建CSV表头
$csvHeader = $adUsers[0].PSObject.Properties.Name -join ','

# 4. 构建每一行的内容(直接用逗号分隔,无引号)
$csvRows = $adUsers | ForEach-Object {
    # 把每个属性的值按顺序拼接成逗号分隔的字符串
    $_.PSObject.Properties.Value -join ','
}

# 5. 把表头和行合并,输出到CSV文件
@($csvHeader) + $csvRows | Out-File -FilePath "Data.csv" -Encoding UTF8 -NoNewline

几点小提示

  • 我特意把-Properties *改成了只加载需要的GivenName, SurName, EmployeeId,这样能让脚本跑快很多,避免加载一堆没用的AD属性。
  • 如果你的用户数据里有逗号,这种无引号的格式会破坏CSV结构(因为工具没法区分字段分隔符和内容里的逗号)。如果遇到这种情况,你可以提前把内容里的逗号替换成其他字符,比如:$_.GivenName -replace ',', ';'。
  • 要是AD里没有用户数据,脚本会报错,你可以加个判断:if ($adUsers) { ... } else { Write-Host "No enabled users found" }

这样输出的CSV文件就完全没有引号,而且包含你要的空白列,完全符合工具的要求,不用事后修改文件~

备注:内容来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 10:33:10