更改表的列宽,以避免输出被截断

时间:2019-02-13 13:53:19

标签: powershell

我的控制台输出太小-我获得的IP地址被截断了。

我知道如何将输出格式化为表格,但是,我正在从循环中输出数据,当我将每个输出流水线到format-table时,我得到了不错的列宽,但是3空行+2每一行实际数据的标题。这很烦人,而且在没有使用Format-Table的情况下如何扩大列的情况下,我找不到任何在线内容。

通常更改大小或在整个循环中使用Format-Table的好方法是什么?

不想将每个输出附加到变量或文件,然后将其输出到控制台-它需要在控制台中循环显示。

这就是我的意思,如果您想知道的话

之前:

Name          IPv4Address  
----          -----------  
PC12315274    192.168.10...
PC17245658    192.168.10...
NB12346679    192.168.12.38
PC12245614    192.168.10...
SV12347348    192.168.10...
PC62345678    192.168.10...
SV12165667    192.168.17.28

在我的循环中使用Format-Table时:

Name       IPv4Address  
----       -----------  
PC12315274 192.168.12.129



Name       IPv4Address  
----       -----------  
PC62345678 192.168.14.161



Name       IPv4Address  
----       -----------  
PC12165667 192.168.11.123



Name       IPv4Address  
----       -----------  
NB12555662 192.168.17.125

以下是相关代码:

foreach ( $subnet in (7..100)) {
    foreach ( $client in (1..253)) {
        get-adcomputer -filter "IPv4Address -eq '192.168.$subnet.$client'" -Properties * `
            | select Name, IPv4Address
    }
}

1 个答案:

答案 0 :(得分:2)

我发现将Select-Object输出到Format-Table的管道会引起类似的问题。尝试先将管道直接铺设到英尺,而无需先选择

我还建议只查询一次AD,然后在powershell中过滤地址”

Get-ADComputer -filter * -Properties ipv4address | 
where {
    $_.ipv4address -ne $null -and 
    $_.ipv4address.split(".")[2] -in 7..100 -and 
    $_.ipv4address.split(".")[3] -in 1..253} | 
ft name,ipv4address -autosize