将日志文件形成为 table
form the log file as a table
我有以下代码
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
问题是:我想用列 "Host"、"Ping"、"Zugriffszeit" 和 "Zeit" 组成一个 table。
如何形成此 table 并在某处另存为 .txt 或 .log 文件??
感谢帮助
使用与输出相同的数据!
要导出到 csv(如果您想稍后以编程方式重新使用数据):
$re |Export-Csv $logpath -NoTypeInformation
如果您想再次将其格式化为漂亮的 table,这很简单:
Import-Csv $logpath |Format-Table
如果您只是想在日志文件中输出漂亮的表格:
$re |Format-Table |Out-String |Out-File $logfile
@MathiasR.Jessen 显示导入和导出到 csv。
但是,如果您必须使用 .txt 或 .log 文件(如您问题的方面所述),则使用 PSCustomObject 和 Out-File
[PSCustomObject]@{
Host = $pcre
Ping = $pire
Zugriffszeit = $zure
Zeit = $zeit
} | Out-File $logpath
稍后像这样导入:
Get-Content $logpath
我有以下代码
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
问题是:我想用列 "Host"、"Ping"、"Zugriffszeit" 和 "Zeit" 组成一个 table。 如何形成此 table 并在某处另存为 .txt 或 .log 文件??
感谢帮助
使用与输出相同的数据!
要导出到 csv(如果您想稍后以编程方式重新使用数据):
$re |Export-Csv $logpath -NoTypeInformation
如果您想再次将其格式化为漂亮的 table,这很简单:
Import-Csv $logpath |Format-Table
如果您只是想在日志文件中输出漂亮的表格:
$re |Format-Table |Out-String |Out-File $logfile
@MathiasR.Jessen 显示导入和导出到 csv。
但是,如果您必须使用 .txt 或 .log 文件(如您问题的方面所述),则使用 PSCustomObject 和 Out-File
[PSCustomObject]@{
Host = $pcre
Ping = $pire
Zugriffszeit = $zure
Zeit = $zeit
} | Out-File $logpath
稍后像这样导入:
Get-Content $logpath