首页 > 解决方案 > 从 Get-NetIPAddress 针对数组创建单个表

问题描述

早上好,我希望这很容易;我正在尝试使用Get-NetIPAddress针对一组服务器的表格在终端中显示。我可以得到这张桌子,但它要么为每个项目创建一个新表格,要么只保存最后一个对象,我想让它成为一个完整的表格。下面是我的代码

$Servers = @(Test1,Test2)

foreach($Server in $Servers){
  $GetIP = get-netipaddress -CimSession $Server -AddressFamily ipv4 -PrefixOrigin Manual | Select PSComputerName,IPAddress
  $GetIP | Format-Table
}

标签: powershell

解决方案


用于ForEach-Object构造输出到的单个管道Format-Table

$Servers |ForEach-Object {
  Get-NetIPAddress -CimSession $_ -AddressFamily ipv4 -PrefixOrigin Manual
} |Format-Table PSComputerName,IPAddress

只要Format-Table期望来自上游 cmdlet 的更多输入,它就会继续填充同一个表。


或者,使用-HideTableHeaders参数来抑制重复的标题 - 唯一的问题是您需要第一次调用才能实际包含表标题,但您可以执行以下操作:

# We'll use this hashtable to control the table header visibility
$FTParams = @{ HideTableHeaders = $false }

foreach($Server in $Servers){
  $GetIP = get-netipaddress -CimSession $Server -AddressFamily ipv4 -PrefixOrigin Manual | Select PSComputerName,IPAddress
  $GetIP | Format-Table @FTParams

  # Format-Table has run at least once, we can start hiding the headers
  $FTParams['HideTableHeaders'] = $true
}

推荐阅读