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

如何将指定Powershell命令的执行结果批量插入Excel单元格

PowerShell命令结果导出到Excel解决方案

方案一:导出CSV文件(新手首选,无需额外依赖)

这个方案操作最简单,利用PowerShell原生的结构化对象导出功能,生成的CSV文件可以直接用Excel打开,格式自动对齐。
注意:不要使用findstr、format-list这类会把对象转成纯文本的命令,直接用原生cmdlet获取结构化数据即可,避免导出后格式混乱。

完整导出脚本

# 1. 导出域信息
Get-ComputerInfo | select CsDomain | Export-Csv -Path "域信息.csv" -Encoding UTF8 -NoTypeInformation

# 2. 导出本地管理员组成员
Get-LocalGroupMember -Group Administrators | Export-Csv -Path "管理员组成员.csv" -Encoding UTF8 -NoTypeInformation

# 3. 导出已安装软件列表
# 提示:Win32_Product会触发MSI安装包修复校验,速度慢且有概率修改软件配置,推荐用下方注册表查询命令替代
Get-CimInstance -Class Win32_Product | Export-Csv -Path "已安装软件列表.csv" -Encoding UTF8 -NoTypeInformation

# 4. 导出时区信息
Get-TimeZone | Export-Csv -Path "时区信息.csv" -Encoding UTF8 -NoTypeInformation

# 5. 导出系统区域设置
Get-Culture | Select-Object * | Export-Csv -Path "区域设置.csv" -Encoding UTF8 -NoTypeInformation

# 6. 导出防火墙配置
Get-NetFirewallProfile | select Name, Enabled | Export-Csv -Path "防火墙配置.csv" -Encoding UTF8 -NoTypeInformation

# 7. 导出逻辑磁盘信息
Get-CimInstance -Class Win32_LogicalDisk | Export-Csv -Path "磁盘信息.csv" -Encoding UTF8 -NoTypeInformation

# 8. 导出网卡缓冲区配置
$nicBufferConfig = @()
Get-NetAdapter | ForEach-Object {
    $recv = Get-NetAdapterAdvancedProperty -Name $_.Name -DisplayName "Receive Buffer Size" -ErrorAction SilentlyContinue
    $send = Get-NetAdapterAdvancedProperty -Name $_.Name -DisplayName "Send Buffer Size" -ErrorAction SilentlyContinue
    $nicBufferConfig += [PSCustomObject]@{
        网卡名称 = $_.Name
        接收缓冲区大小 = $recv ? $recv.DisplayValue : "未配置"
        发送缓冲区大小 = $send ? $send.DisplayValue : "未配置"
    }
}
$nicBufferConfig | Export-Csv -Path "网卡缓冲区配置.csv" -Encoding UTF8 -NoTypeInformation

# 9. 导出IPv6绑定状态
Get-NetAdapterBinding -ComponentID ms_tcpip6 | Export-Csv -Path "IPv6绑定状态.csv" -Encoding UTF8 -NoTypeInformation

导出完成后所有CSV文件可以直接用Excel打开,手动将需要的内容复制到同一个工作簿的不同工作表即可。

方案二:直接生成多工作表Excel文件(无需手动整理,需本地安装Excel)

如果需要自动把所有结果汇总到同一个Excel文件的不同工作表,可以调用Excel COM对象实现,脚本如下:

# 初始化Excel应用对象
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false # 改为$true可以看到生成过程
$workbook = $excel.Workbooks.Add()

# --------------------------
# 1. 写入域信息工作表
$sheet = $workbook.Worksheets.Add()
$sheet.Name = "域信息"
$data = Get-ComputerInfo | select CsDomain
$row = 1
foreach ($prop in $data[0].PSObject.Properties.Name) {
    $sheet.Cells.Item($row, 1) = $prop
    $sheet.Cells.Item($row, 2) = $data[0].$prop
    $row++
}

# --------------------------
# 2. 写入管理员组成员工作表
$sheet = $workbook.Worksheets.Add()
$sheet.Name = "管理员组成员"
$data = Get-LocalGroupMember -Group Administrators
# 写入表头
$col = 1
foreach ($prop in $data[0].PSObject.Properties.Name) {
    $sheet.Cells.Item(1, $col) = $prop
    $col++
}
# 写入行数据
$row = 2
foreach ($item in $data) {
    $col = 1
    foreach ($prop in $item.PSObject.Properties.Name) {
        $sheet.Cells.Item($row, $col) = $item.$prop
        $col++
    }
    $row++
}

# 其他命令的写入逻辑和上面一致,按需添加即可

# 保存文件并退出
$workbook.SaveAs("系统信息汇总.xlsx")
$excel.Quit()
# 释放COM对象,避免Excel后台进程残留
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null

常见问题说明

  • 如果运行脚本提示无权执行,先以管理员身份运行PowerShell,执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,输入Y确认即可。
  • 已安装软件查询推荐用更安全的注册表查询方案替代Win32_Product:
Get-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*" | 
Where-Object {$_.DisplayName -ne $null} | Select-Object DisplayName, Publisher, InstallDate | 
Sort-Object DisplayName

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:12:03