首页/系统/Windows 运维速查/Get-Content 读取文本与日志
PowerShell 基础66 条

Get-Content 读取文本与日志

读取文本文件:默认逐行输出字符串数组,配合 -Tail/-Wait 可做日志尾部查看与实时跟踪。

Windows 运维速查系统更新于 2026-10-13

Get-Content 是什么

Get-Content 用来读取文本文件的内容,默认按行返回字符串数组,每一行是一个独立的字符串对象,因此可以直接过滤、计数、按行号取用。它有两个和日志查看高度相关的参数:指定尾部行数相当于只取末尾部分,加等待参数后文件一旦被追加就会把新行继续输出,效果类似实时跟踪。读配置文件、抽样看日志、把内容交给匹配命令筛选关键字,都是它的常见用途。

基本信息

适用平台Windows PowerShell 5.1 与 PowerShell 7 及以上
语法Get-Content [-Path] <文件> [-TotalCount n] [-Tail n] [-Wait] [-Encoding <编码>] [-Raw]
别名cat、type、gc
尾巴读取参数写法在不同版本略有差异,老版本用总行数配合倒数,新版本有专门的尾部参数
实时跟踪等待参数会在文件被追加时继续输出,需手工中断
编码默认按系统编码读取,读 UTF-8 文件要显式指定,否则中文会乱码

典型使用场景

  • 抽样查看日志:只读末尾若干行,避免把几百兆文件整读进内存
  • 实时跟踪输出:等待追加内容,观察程序运行过程或排查启动失败
  • 关键字筛选:把内容交给匹配命令,挑出含错误信息的行
  • 读取配置:按行读取配置文件并用正则提取键值
  • 统计行数:配合度量命令得到行数、字数等指标
  • 与编码显式搭配,避免中文内容出现乱码

常用示例

常用示例
# 读取末尾 50 行,日志查看最常用
Get-Content D:\Logs\app.log -Tail 50
# 实时跟踪末尾内容,Ctrl+C 结束
Get-Content D:\Logs\app.log -Wait -Tail 10
# 筛选包含关键字的行
Get-Content D:\Logs\app.log | Select-String -Pattern ERROR
# 指定编码读取 UTF-8 文件,避免乱码
Get-Content D:\cfg\app.ini -Encoding UTF8
# 统计文件行数
(Get-Content D:\Logs\app.log | Measure-Object -Line).Lines
# 整块读取为单个字符串,适合正则整体匹配
Get-Content D:\cfg\app.json -Raw

常用参数速查

参数作用注意点
-Tail n只取末尾 n 行大文件场景的首选,读取快且省内存
-TotalCount n取最前面 n 行适合看文件头部格式
-Wait文件被追加时继续输出会占住当前会话,计划任务中不要使用
-Encoding指定字符编码读取跨平台文件时必须显式指定
-Raw整块读成单个字符串正则整体匹配时用,超大文件会吃内存
-ReadCount指定一次读入的行数影响管道传递的批次大小,可微调性能
读取大文件时不要整读再过滤:先用尾部参数或匹配命令收窄范围,整读几百兆日志会消耗大量内存,也会让后续处理变慢。
实时跟踪会持续占用一个会话且不会自行退出,放进计划任务会导致任务永远不结束;需要长时间采集应改用定时读取新行或专门的日志采集方式。

易错点

  • 默认编码读取跨平台文件:中文或特殊字符会显示成乱码,读之前先确认文件编码并显式指定
  • 把实时跟踪放进自动化任务:会话不会结束,任务会一直挂住,手工排查完成记得中断
  • 整读超大日志再筛选:内存与耗时都会失控,应先用尾部行数或匹配命令缩小范围
  • 把读到的行当字符串处理却忘记去除空白:行尾换行符与空格会影响比较结果,必要时先修剪
  • 用行号定位内容:日志会被轮转或追加,行号不稳定,按时间或关键字定位更可靠

数据来源与参考

  • Microsoft Learn:Get-Content

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌