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
相关产品推荐
相关产品推荐

