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

PowerShell脚本获取Get-NetNeighbor IPv4地址列表失败求助

解决PowerShell提取Get-NetNeighbor IPv4地址的问题

你的脚本出现大量空行和冗余输出,核心问题出在这两行:

$ipString = Select-Object {$i.IPAddress} | Out-String
$ipString
  • Select-Object {$i.IPAddress}完全没必要,直接访问$i.IPAddress就能拿到纯IPv4字符串。
  • Out-String会把Select-Object的输出(包括表头、空行)转换成带格式的字符串,导致$ipString里包含大量换行和无关内容。
  • 循环里单独写$ipString会直接把这个带冗余的字符串打印出来,加剧输出混乱。

修正后的脚本(保留List实现)

Write-Output "Hello World"

# 获取IPv4邻居条目
$netNeighbours = Get-NetNeighbor -AddressFamily IPv4
# 初始化字符串列表
$listOfIPs = New-Object Collections.Generic.List[String]

foreach ($entry in $netNeighbours) {
    # 直接提取纯IPv4地址字符串
    $ipString = $entry.IPAddress
    $listOfIPs.Add($ipString)
}

# 按期望格式输出(带引号、逗号分隔)
Write-Output "`"$($listOfIPs -join '","')`""

更简洁的实现(无需手动循环)

PowerShell可以直接通过属性提取简化整个流程:

Write-Output "Hello World"

# 直接提取IPv4地址并格式化为目标字符串
$formattedIPs = "`"$((Get-NetNeighbor -AddressFamily IPv4).IPAddress -join '","')`""
Write-Output $formattedIPs

关键改进点

  • 直接访问对象属性$entry.IPAddress,获取无冗余的纯IPv4字符串。
  • 用-join '","'把IP数组拼接成"ip1","ip2"的格式,再前后补全引号得到最终目标格式。
  • 移除循环中多余的$ipString输出,避免额外打印冗余内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:52:04