сформировать файл журнала в виде таблицы - PullRequest
1 голос
/ 01 апреля 2020

У меня есть следующий код

function ping-test($hosts) {
    $conn = [System.Collections.ArrayList]@($hosts)
    [int]$hostsamount = $conn.Count

    foreach($co in $conn)
    {
        $check = Test-Connection $co -Count 3 -ErrorAction SilentlyContinue
        $zugriffzeit = $check | select ResponseTime | Measure-Object ResponseTime -Average
        $avg = [system.math]::Round($zugriffzeit.Average)
        $zeit = Get-Date -Format HH:mm:ss

        if($check -eq $null)
        {
            $pcre = Write-Output $co
            $pire = Write-Output 'False'
            $zure = $null
        }
        else
        {
            $pcre = Write-Output $co
            $pire = Write-Output 'True'
            $zure = Write-Output "$avg ms"
            $zure = $zure.Replace(' ','')
        }
        [void]$re.Add([PSCustomObject] @{PCName=$pcre;    PingResult=$pire;    Zugriffszeit=$zure;    Zeit=$zeit} )
        **$log = "Host:{0} Ping: {1} Zugriffszeit: {2} Zeit: {3}" -f $pcre, $pire, $zure, $zeit 
        $log >> $logpath**

        [int]$recount = $re.Count 
        [int]$eff = $recount - $hostsamount
        try {
            $re.RemoveRange(0, $eff)
        }
        catch{
            Write-Host $Error
        } 
    }
    return $re
}

Я использую следующий код (находится в этой функции)

    $log = "Host:{0} Ping: {1} Zugriffszeit: {2} Zeit: {3}" -f $pcre, $pire, $zure, $zeit 
    $log >> $logpath

Вопрос: я хочу сформировать таблицу с Colums «Host», «Ping», «Zugriffszeit» и «Zeit». Как я могу сформировать эту таблицу и сохранить в виде файла .txt или .log где-нибудь ??

Спасибо за помощь

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

@MathiasR.Jessen показал импорт и экспорт в csv.

Но если вы обязаны использовать файлы .txt или .log (как сказано в аспекте вашего вопроса), тогда используйте PSCustomObject и Out-File

    [PSCustomObject]@{
      Host = $pcre
      Ping = $pire 
      Zugriffszeit = $zure
      Zeit = $zeit 
    } | Out-File $logpath

Позже импортируем как:

Get-Content $logpath
1 голос
/ 01 апреля 2020

Используйте те же данные, которые вы выводите!

Чтобы экспортировать в CSV (если вы хотите повторно использовать данные программно позже):

$re |Export-Csv $logpath -NoTypeInformation

Если вы хотите снова отформатировать их в хорошую таблицу, это так же просто, как :

Import-Csv $logpath |Format-Table

Если вы просто хотите получить хорошо табулированный вывод в лог-файл:

$re |Format-Table |Out-String |Out-File $logfile
...