【发布时间】:2019-02-13 23:53:23
【问题描述】:
我的控制台输出太小 - 我得到输出的 IP 地址被截断。
我知道如何将输出格式化为表格,但是,我正在从循环中输出数据,当我将每个输出流水线到 format-table 时,我得到了一个不错的列宽,但是 3 个空行 + 2 行每一行实际数据的标题。这很烦人,我在网上找不到任何关于如何在不使用 Format-Table 的情况下扩大列的内容。
有什么好的方法可以改变大小,或者在整个循环中使用Format-Table?
我确实不想将每个输出附加到变量或文件,然后将其打印到控制台 - 它需要在控制台中出现循环。
这就是我的意思,如果你想知道的话:
之前:
名称 IPv4 地址 ---- ----------- 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 时:
以下是相关代码:
foreach ( $subnet in (7..100)) {
foreach ( $client in (1..253)) {
get-adcomputer -filter "IPv4Address -eq '192.168.$subnet.$client'" -Properties * `
| select Name, IPv4Address
}
}
【问题讨论】:
-
你能发布你的实际代码吗?如果没有看到它,我无法确定,但请尝试将
-Autosize参数附加到Format-Table- 根据the help,它专门用于帮助解决此类情况。另外,我通过“循环”假设您正在使用foreach(...) {...}- 如果您在管道上将其替换为Foreach-Object,则可以将结果通过管道传输到Format-Table并避免您的第二个问题。但是,正如我所说,没有你的代码,很难说。 -
完成,我在内循环的第一个管道之后添加了
| Format-Table,我尝试将它放在外循环后面,但没有用 -
当您在第一个循环前面放置
$var =并将所有内容一起输出时,您甚至可以收集两个循环的输出。 ;-) -
我知道,这就是为什么我特别说我不想将所有内容一起输出,而是逐个输出:P
-
您的代码对我来说很好用。我可以在不使用
Format-Table的情况下看到全名和 IP 地址。还有什么你没有包括的吗?顺便说一句,这看起来非常低效,因为它将执行大约 24000 次 AD 查找来检查给定范围内的每个地址。有什么方法可以抓取整个列表,然后在客户端上进行过滤?
标签: powershell