PowerShell Out-File 写入错误数据

PowerShell Out-File writes wrong data

我想将脚本的结果放入一个新文件中,因此我正在使用 Out-File

我的问题是,当我 运行 脚本时,我的终端内的结果与我的新写入文件内的结果不同。它应该和我终端里的一样。

for($i = 0; $i -lt $outVar.Length; $i++) {
    $testOut = $outVar[$i].Line.Split("(")[0]
    $testIn  = $inVar[$i].Line.Split("(")[0]
    $testOut + $testIn
    $ConvertedStart = [datetime]::Parse($testOut)
    $ConvertedEnd = [datetime]::Parse($testIn)
    $loggedTime = New-TimeSpan -Start $ConvertedStart -End $ConvertedEnd
   # $loggedTime.GetType();
    $loggedTime | Out-File -FilePath "C:\Users\**\desktop\LDorado-LicenseTime.txt" -Append
    Write-Host "Licence got used for "  $loggedTime 

}

在我的终端中,我看到了正确的日志,例如:License got used for 00:07:14。

如您所见,我正在尝试将 $loggedTime 变量写入新文件,此变量保存时间值,如 00:07:14、00:03:34 等。

我的文件已创建并填充,但数据如下所示:

Days              : 0
Hours             : 0
Minutes           : 3
Seconds           : 36
Milliseconds      : 0
Ticks             : 2160000000
TotalDays         : 0,0025
TotalHours        : 0,06
TotalMinutes      : 3,6
TotalSeconds      : 216
TotalMilliseconds : 216000





Days              : 0
Hours             : 0
Minutes           : 3
Seconds           : 36
Milliseconds      : 0
Ticks             : 2160000000
TotalDays         : 0,0025
TotalHours        : 0,06
TotalMinutes      : 3,6
TotalSeconds      : 216
TotalMilliseconds : 216000





Days              : 0
Hours             : 0
Minutes           : 3
Seconds           : 36
Milliseconds      : 0
Ticks             : 2160000000
TotalDays         : 0,0025
TotalHours        : 0,06
TotalMinutes      : 3,6
TotalSeconds      : 216
TotalMilliseconds : 216000

我想那是因为数据类型可能是时间跨度?但我也想知道为什么它与终端日志不同,因为变量只包含提到的值(00:07:14、00:03:34...)。

编辑:好的,所以我注意到 Write-Host 实际上输出的时间与 00:07:14 类似,但如果没有它,它看起来像是写入文件的数据。Soo write-host 做了一些重新格式化。

好的,所以我自己修复了它。似乎 Write-Host 重新格式化了输出的数据。

通过将 .ToString() 放入我的 $loggedTime 变量中,我实际上得到了想要的结果。

$loggedTime.ToString() | Out-File -FilePath "C:\Users\**\desktop\LDorado-LicenseTime.txt" -Append