Объединение нескольких выходов в таблицу - PullRequest
0 голосов
/ 18 февраля 2019

Используя 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

$Wi-Fi получает статус адаптера 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}

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 18 февраля 2019

Вы должны будете скрыть заголовки таблицы при последующих записях, а также обрезать вывод.

Попробуйте это:

while (1) {
    $ping = test-connection 8.8.8.8 -delay 1 -count 1
    $wifi = @{n='Status';e={get-netadapter -physical -name Wi-Fi | select -expand Status}}
    $timestamp = @{n='TimeStamp';e={Get-Date}}
    $path = "C:\test-connection.txt"
    $ping | ft __SERVER, Address, ResponseTime, $timestamp, $wifi -Hide:(Test-Path $path) | out-string | % {$_.trim()} | out-file $path -append
    start-sleep -s 10
}

Использование Format-Table для вывода файла не очень хорошоИдея, хотя, это предназначено для отображения в консоли.Рассмотрите возможность использования CSV или пользовательского формата.

...