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

如何在PowerShell中将多个变量结果输出至同一个CSV文件

解决方案

你原有代码存在2个核心问题:

  • 获取$DomAdmins、$OrgAdmins时用了Format-Table(别名ft),该命令仅用于控制台格式化展示,输出的不是结构化数据,无法直接用于导出CSV
  • 三类数据的结构不一致,需要统一属性结构后才能合并导出到同一个CSV文件

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

#Module
#Import-Module activedirectory 

#Variablen
$Date= get-date -format "yyyy-MM-dd" # 把斜杠换成横杠,避免路径/文件名非法字符问题
cls
$MA= Read-Host -Prompt "MA eingeben:"
cls
$Kunde= Read-Host -Prompt "Kundenkürzel eingeben:"
cls
$Path=  Read-Host -Prompt "Speicherpfad eingeben (z.B: C:\):"
cls
$fullpath= Join-Path -Path $Path -ChildPath "$($Kunde)_$($Date)_$($MA).csv" # 用Join-Path避免路径拼接错误

#Admins 去掉ft,改用Select-Object,统一加类型标识
$DomAdmins=Get-ADGroupMember 'Domänen-Admins' | Select-Object `
    @{Name='数据类型';Expression={'域管理员'}}, `
    @{Name='账号/设备名称';Expression={$_.SamAccountName}}, `
    @{Name='操作系统';Expression={''}}, `
    @{Name='系统版本';Expression={''}}, `
    @{Name='IP地址';Expression={''}}

$OrgAdmins=Get-ADGroupMember 'Organisations-Admins' | Select-Object `
    @{Name='数据类型';Expression={'组织管理员'}}, `
    @{Name='账号/设备名称';Expression={$_.SamAccountName}}, `
    @{Name='操作系统';Expression={''}}, `
    @{Name='系统版本';Expression={''}}, `
    @{Name='IP地址';Expression={''}}

#Server 同样统一属性结构
$Server=Get-ADComputer -Filter 'operatingsystem -like "*server*" -and enabled -eq "true"' `
    -Properties Name,Operatingsystem,OperatingSystemVersion,IPv4Address  |
    Sort-Object -Property Operatingsystem |
    Select-Object `
    @{Name='数据类型';Expression={'服务器'}}, `
    @{Name='账号/设备名称';Expression={$_.Name}}, `
    @{Name='操作系统';Expression={$_.Operatingsystem}}, `
    @{Name='系统版本';Expression={$_.OperatingSystemVersion}}, `
    @{Name='IP地址';Expression={$_.IPv4Address}}

# 合并三类对象导出到同一个CSV
$DomAdmins + $OrgAdmins + $Server | Export-Csv -Path $fullpath -Encoding UTF8 -NoTypeInformation -UseCulture

#Output 控制台输出部分保持不变,这里的ft不影响导出逻辑
cls
Write-Host "Kundendoku vom: " $Date -ForegroundColor cyan
Write-Host "Autor: " $MA 
Write-Host "Kundenkürzel:" $Kunde 
Write-Host "" -ForegroundColor cyan
Write-Host "Alle Domänenadmins:" -ForegroundColor cyan
$DomAdmins | Select-Object '账号/设备名称' | FT | Out-String|% {write-host $_ }
Write-Host "Alle Organisationsadmins:" -ForegroundColor cyan
$OrgAdmins | Select-Object '账号/设备名称' | FT | Out-String|% {write-host $_ }
Write-Host "Alle Domänenserver" -ForegroundColor cyan
Write-Host "Achtung! Nur Domänenserver!" -ForegroundColor red
$Server | Select-Object '账号/设备名称',操作系统,系统版本,IP地址 | FT | Out-String|% {write-host $_ }

修改说明:

  • 用计算属性给所有数据统一了5个公共字段,导出的CSV可以清晰区分每一行数据的类型,不会出现属性错位的情况
  • 替换了路径拼接和日期格式的写法,避免因为特殊字符导致的路径错误
  • 导出时指定了UTF8编码,避免特殊字符乱码,-UseCulture参数保证CSV可以用Excel直接正常打开

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:24:03