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

PowerShell实现多Windows设备自定义表头CSV生成与主机存活检测

解决Windows客户端/服务器PowerShell CSV采集与存活检测问题

一、客户端CSV追加脚本(修复字符间NULL与无法追加问题)

之前脚本出现的字符间NULL、无法追加主机条目问题,主要是编码不匹配或手动拼接CSV格式导致的,以下是修复后的脚本:

# 替换为实际的共享文件夹CSV路径,比如\\FileServer\HostMonitor\Hosts.csv
$csvPath = "\\YourServer\SharedFolder\Hosts.csv"

# 获取本机主机名
$hostname = $env:COMPUTERNAME

# 获取第一个非环回的IPv4地址(优先DHCP分配,再取静态地址)
$ipAddress = (Get-NetIPAddress -AddressFamily IPv4 -PrefixOrigin Dhcp | Select-Object -First 1).IPAddress
if (-not $ipAddress) {
    $ipAddress = (Get-NetIPAddress -AddressFamily IPv4 -PrefixOrigin Manual | Select-Object -First 1).IPAddress
}

# 构造要写入的主机信息对象
$hostRecord = [PSCustomObject]@{
    "Hostnames"    = $hostname
    "IP Address"   = $ipAddress
}

# 检查CSV是否存在:不存在则创建带表头的文件,存在则追加条目
if (-not (Test-Path -Path $csvPath)) {
    $hostRecord | Export-Csv -Path $csvPath -Encoding UTF8 -NoTypeInformation
} else {
    $hostRecord | Export-Csv -Path $csvPath -Encoding UTF8 -Append -NoTypeInformation
}

关键修复说明

  • 用Export-Csv的-Append参数安全追加条目,避免手动拼接文本导致的格式混乱
  • 指定-Encoding UTF8,彻底解决Unicode编码带来的字符间NULL问题
  • 逻辑上优先获取DHCP分配的IP,确保拿到的是实际对外的有效地址

任务计划配置提示

  1. 创建每日定时任务,触发器设为你需要的执行时间
  2. 操作选择“启动程序”,程序/脚本填powershell.exe,参数填-ExecutionPolicy Bypass -File "C:\Scripts\Client_Upload_HostInfo.ps1"(替换为你的脚本实际路径)
  3. 确保任务运行的账号拥有共享文件夹的写入权限

二、服务器存活检测脚本(每15分钟执行)

以下脚本实现读取共享CSV、Ping检测主机状态并添加IsAlive列的功能:

# 共享CSV路径
$csvPath = "\\YourServer\SharedFolder\Hosts.csv"
# 可以选择覆盖原文件,或者导出到新文件,这里示例导出到新文件
$outputCsvPath = "\\YourServer\SharedFolder\Hosts_With_Status.csv"

# 读取CSV文件内容
$hostList = Import-Csv -Path $csvPath

# 遍历每个主机条目,执行Ping检测
foreach ($host in $hostList) {
    # 快速Ping检测:发送1个包,超时1秒,返回布尔值
    $pingSuccess = Test-Connection -ComputerName $host."IP Address" -Count 1 -TimeoutSeconds 1 -Quiet
    # 添加IsAlive列,设置对应状态文本
    $host | Add-Member -MemberType NoteProperty -Name "IsAlive" -Value $(if ($pingSuccess) { "该计算机在线" } else { "该计算机离线" })
}

# 导出包含状态的CSV文件
$hostList | Export-Csv -Path $outputCsvPath -Encoding UTF8 -NoTypeInformation

关键功能说明

  • 使用Test-Connection的-Quiet参数直接返回检测结果,简化状态判断
  • 配置-TimeoutSeconds 1和-Count 1,加快批量主机的检测速度
  • 用Add-Member动态添加IsAlive列,保证CSV结构与原文件兼容

任务计划配置提示

  1. 创建定时任务,触发器设为“重复任务间隔15分钟”,持续时间设为“无限期”
  2. 操作参数同客户端脚本,确保运行账号拥有共享文件夹的读写权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:20:36