Search code examples
powershelladministrator

form the log file as a table


I have the following code

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
}

I use the following code(is in that function)

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

the Question is: I want to form a table with the Colums "Host", "Ping", "Zugriffszeit", and "Zeit". How can I form this table and save as a .txt or .log file somewhere??

Thx for the help


Solution

  • Use the same data as you're outputting!

    To export to csv (if you want to re-use the data programmatically later):

    $re |Export-Csv $logpath -NoTypeInformation
    

    If you want to ever format it in a nice table again, it's as easy as:

    Import-Csv $logpath |Format-Table
    

    If you simply want nicely tabulated output in your log file:

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