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

PowerShell CmdLet开发:获取网络设备信息并实现指定格式输出

PowerShell 网络设备信息查询代码调整方案

调整后完整代码

# 从arp -a输出中匹配提取所有有效IPv4地址,避免硬编码行号导致的兼容性问题
$ipList = arp -a | Select-String -Pattern '^\s*(\d{1,3}(?:\.\d{1,3}){3})' | ForEach-Object { $_.Matches.Groups[1].Value }

foreach ($ip in $ipList) {
    # 执行连通性检测,同时尝试反向解析主机名,忽略执行错误
    $connResult = Test-Connection -ComputerName $ip -Count 1 -ResolveDestination -ErrorAction SilentlyContinue
    
    # 赋值字段
    $connectStatus = $connResult ? "是" : "否"
    $hostName = ($connResult -and $connResult.DisplayName -ne $ip) ? $connResult.DisplayName : "未获取到"

    # 按要求格式输出
    Write-Output "$hostName | $ip | $connectStatus"
}

调整说明

  • 替换了硬编码截取ARP输出行的逻辑,用正则匹配提取IP,适配不同语言、不同版本Windows系统的arp命令输出格式,避免截取错误、索引越界问题
  • 用PowerShell原生Test-Connection cmdlet替代外部ping命令,可直接获取结构化检测结果,无需解析ping的文本输出
  • 自动判断主机名解析结果,解析失败时统一返回「未获取到」,连通状态直接输出要求的「是/否」格式
  • 内网设备如果无法获取主机名属于正常现象,和对应设备的DNS反向解析配置有关

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:36:04