【发布时间】:2019-02-18 11:42:32
【问题描述】:
使用 Powershell 我试图将三个命令的结果放入一个表中并将它们输出到一个文件中,然后永远重复该命令。我不知道如何正确格式化表格。
这是我的脚本
while (1){
$ping = test-connection 8.8.8.8 -delay 1 -count 1
$wifi = @{n='Status';e={get-netadapter -physical -name Wi-Fi | select Status}}
$timestamp = @{n='TimeStamp';e={Get-Date}}
$ping | format-table __SERVER, Address, ResponseTime, $timestamp, $wifi | out-file "C:\test-connection.txt" -append
start-sleep -s 10
}
$ping 得到 8.8.8.8 的 ping 结果
$wifi 获取 wi-fi 适配器的状态
$timestamp 获取当前时间
最终的输出应该是这样的:
__SERVER Address ResponseTime TimeStamp Status
-------- ------- ------------ --------- ------
Hostname 8.8.8.8 19 18/02/2019 10:19:23 Up
Hostname 8.8.8.8 19 18/02/2019 10:19:23 Up
Hostname 8.8.8.8 19 18/02/2019 10:19:23 Up
Hostname 8.8.8.8 19 18/02/2019 10:19:23 Up
...
但是,根据我当前的设置,它会这样做:
__SERVER Address ResponseTime TimeStamp Status
-------- ------- ------------ --------- ------
Hostname 8.8.8.8 20 18/02/2019 10:19:13 @{Status=Up}
__SERVER Address ResponseTime TimeStamp Status
-------- ------- ------------ --------- ------
Hostname 8.8.8.8 19 18/02/2019 10:19:23 @{Status=Up}
__SERVER Address ResponseTime TimeStamp Status
-------- ------- ------------ --------- ------
Hostname 8.8.8.8 20 18/02/2019 10:19:33 @{Status=Up}
感谢任何帮助。
【问题讨论】:
-
在 while 循环中,它一次捕获一个值。您需要在循环外捕获整个输出,或者您可以使用 arraylist 创建一个 psobject 并分别映射输出。
标签: windows powershell powershell-4.0