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
我想将脚本的结果放入一个新文件中,因此我正在使用 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