powershell - 日志文件格式被搞砸了
问题描述
我有一个由预定的 ps1 脚本生成的日志文件。当它只是向文件写入行时它工作正常,但现在当我包含一些文件操作时,它有一些弄脏/弄脏的格式,导致执行无法正确运行。
下图的前两行是我希望如何查看和处理文件,最后两行是它现在如何做的示例。
因此,删除前一条记录的 X 无效:
$bootTime = (Get-WmiObject Win32_OperatingSystem).LastBootUpTime
$formBootTime = [Management.ManagementDateTimeConverter]::ToDateTime($bootTime)
$file = Get-Content c:\myUptimeLogFile.txt
$fileMeasure = ($file | Measure-Object)
$numberOfLines = $fileMeasure.Count
$numberOfWords = ($file | Select -Index ($numberOfLines -1) | Measure-Object -Word)
$Line = $file | Select -Index ($numberOfLines -2)
$Line.Split(",")
$wordArray = $Line.Split(",")
$LastLineBT = $wordArray[0]
if ($LastLineBT -eq $formBootTime) {
$unmark = "true"
} else {
$unmark = "false"
}
if($unmark -eq "true") {
$output = "C:\myUptimeLogFile_NEW.txt"
$file[-2] = $file[-2] -replace 'X', ' '
$file | Set-Content $output -Encoding ASCII
Remove-Item -Path "C:\myUptimeLogFile_SBY.txt"
Rename-Item -Path "C:\myUptimeLogFile.txt" -NewName "C:\myUptimeLogFile_SBY.txt"
Rename-Item -Path "C:\myUptimeLogFile_NEW.txt" -NewName "C:\myUptimeLogFile.txt"
}
$uptime = (Get-Date) - $formBootTime
"$formBootTime,$(Get-Date),{0:00},{1:00},{2:00},{3:00},X" -f $uptime.Days,$uptime.Hours,$uptime.Minutes,$uptime.Seconds >> C:\myUptimeLogFile.txt
如果这$unmarked
是真的,那就是文件随机播放并且格式明显改变的时候。在那之前,>>
使用正确的格式。
根据评论,检查Add-Content
代码的最后一行。
更新 - 解决方案:
$newLine = "$formBootTime,$(Get-Date),{0:00},{1:00},{2:00},{3:00},X" -f $uptime.Days,$uptime.Hours,$uptime.Minutes,$uptime.Seconds
Add-Content -Path "C:\TestLog1.txt" -Value $newLine -Encoding "ASCII"
解决方案
推荐阅读
- python-3.x - anaconda 启动错误的 python 和 spyder 版本
- r - 如何按 r 中的特定行拆分数据帧
- extjs - 如何在按钮单击时打开面板
- ios - 如何在 presentViewController 之后禁用 SFSafariViewController 中的滑动手势
- oracle-apex - 选择列表项默认值
- laravel-8 - Laravel 8 提供的两因素验证码无效
- android - android os挂机时如何调试系统logcat
- java - 如何使用 JButton 添加另一个按钮,而不调整框架大小以使其可见?
- javascript - 在for循环中串行发送多个axios请求(一个接一个)
- android - 更新到 Android 10 api 版本 29 后,SQLite 数据库崩溃