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

PowerShell脚本无法合并多服务器CSV文件问题求助

问题分析与修复方案

原脚本的核心问题

  • 服务器列表未生效:$servers的赋值代码被注释掉了,根本没从指定OU里获取服务器列表,循环等于空跑或只处理本地机器。
  • 远程路径错误:$sourcefolder只写了C$\folder\,没有拼接目标服务器名,实际访问的是本地机器的共享目录,所以每次都读取同一个本地文件,导致重复显示同一台服务器的信息。
  • 结果数组被重复清空:$result = @()放在服务器循环内部,每遍历一台服务器就清空一次数组,最后只能保留最后一次循环的数据(如果路径正确的话)。

修正后的脚本

Import-Module ActiveDirectory

# 从目标OU获取所有服务器名称,替换为你实际的OU路径
$servers = (Get-ADComputer -SearchBase "OU=Servers,DC=yourdomain,DC=com" -Filter *).Name

# 初始化结果数组,放在循环外部避免被重复清空
$result = @()

foreach ($server in $servers) {
    # 拼接目标服务器的远程共享文件路径
    $sourceFile = "\\$server\C$\folder\serverinfo.csv"
    
    # 先检查文件是否可访问,避免报错中断脚本
    if (Test-Path -Path $sourceFile) {
        Write-Host "正在读取服务器 $server 的数据..."
        # 直接导入远程CSV并追加到结果数组
        $data = Import-Csv -Path $sourceFile
        $result += $data
    }
    else {
        Write-Warning "服务器 $server 上未找到文件:$sourceFile"
    }
}

# 导出合并后的CSV文件
$exportPath = "\\mycomputer\C$\folder\merged.csv"
$result | Export-Csv -Path $exportPath -NoTypeInformation
Write-Host "合并完成,文件已保存至:$exportPath"

# 输出合并结果预览
$result

关键改进说明

  • 启用$servers变量,正确从AD OU拉取服务器列表,记得替换成你实际的OU完整路径。
  • 拼接完整的远程共享路径\\$server\C$\folder\serverinfo.csv,确保访问的是目标服务器的指定文件。
  • 将结果数组初始化移到服务器循环外部,保证所有服务器的数据能持续累加。
  • 添加Test-Path检查文件可用性,避免因服务器离线、权限不足或文件缺失导致脚本报错中断。
  • 增加执行状态提示,方便跟踪脚本运行进度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 00:32:11