首页/系统/Windows 运维速查/Select-String 内容搜索
PowerShell 基础66 条

Select-String 内容搜索

在文件或文本中按正则搜索并返回匹配对象(文件名、行号、行内容),命令行版 grep。

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

Select-String 是什么

Select-String 在文件或文本里按正则表达式查找匹配内容,相当于命令行环境里常用的文本搜索工具在 PowerShell 中的对应实现。它返回的是匹配对象,包含文件名、行号与匹配文本,因此可以直接按文件分组、按行号排序,也可以只取文件名列表。处理日志、核对配置、在代码库里找关键字都用它。因为返回结构化的匹配结果,它在脚本里比手工解析文本稳得多。

基本信息

适用平台Windows PowerShell 5.1 与 PowerShell 7 及以上
语法Select-String [-Path <文件或通配符>] [-Pattern <正则>] [-SimpleMatch] [-CaseSensitive] [-Context n] [-AllMatches]
默认行为按正则匹配,不区分大小写,输出含文件、行号与匹配行
字面搜索加简单匹配开关后按纯文本查找,不做正则解释
上下文指定上下文行数后,匹配行的前后若干行会一起输出
输入方式可直接读文件,也可从管道接收文本行

典型使用场景

  • 在日志里查找错误关键字,并带出行号方便定位
  • 在代码库中递归搜索函数名,确认调用点分布
  • 核对配置文件里是否存在某个参数
  • 按文件分组统计匹配次数,找出问题最集中的文件
  • 只取匹配到的文件名列表,交给后续处理
  • 带上下文查看匹配行前后内容,判断报错的完整场景

常用示例

常用示例
# 在单个日志文件里查找错误关键字
Select-String -Path D:\Logs\app.log -Pattern 'ERROR'
# 递归搜索多个文件,只输出文件名
Select-String -Path D:\Web\*.config -Pattern 'connectionString' | Select-Object -ExpandProperty Path -Unique
# 带上下文:匹配行前后各两行
Select-String -Path D:\Logs\app.log -Pattern 'Exception' -Context 2,2
# 字面查找,避免正则元字符干扰
Select-String -Path D:\cfg\app.ini -Pattern 'D:\Data[1]' -SimpleMatch
# 区分大小写
Select-String -Path D:\Logs\app.log -Pattern 'ERROR' -CaseSensitive
# 按文件分组统计匹配次数
Select-String -Path D:\Logs\*.log -Pattern 'ERROR' | Group-Object Filename | Select-Object Name, Count

参数速查

参数作用注意点
-Pattern要匹配的内容,支持正则含反斜杠与中括号时按正则语义解释
-SimpleMatch按纯文本匹配查找含特殊字符的路径或配置项时用
-CaseSensitive区分大小写排查特定写法时有用
-Context输出匹配行前后的行数格式为前面行数逗号后面行数
-AllMatches一行里匹配多次时全部返回默认每行只报告一次
-Path 支持通配符可一次搜索多个文件配合递归参数可搜索子目录
返回结果里带文件名、行号与匹配行三个关键信息,按文件名分组或按行号排序都很方便。需要只保留文件清单时,取路径属性并去重即可。
模式里出现的反斜杠、中括号、点号都会被当作正则元字符。搜索包含这些字符的字面内容时加简单匹配开关,可以避免「明明文件里有却搜不到」的情况。

易错点

  • 把正则元字符当字面内容搜索:路径里的反斜杠与配置里的中括号会被解释成正则,导致搜不到或匹配过多,应加简单匹配开关
  • 在大目录上不加范围直接递归:会遍历大量无关文件,先限定扩展名或起始路径
  • 只看有没有匹配不看上下文:报错往往需要前后几行才能看懂,排查日志时带上上下文更省时
  • 混淆大小写敏感性:默认不区分大小写,需要精确匹配时要显式声明
  • 把匹配对象当字符串处理:结果是带属性的对象,应取属性而不是切文本,否则换环境就会失效

数据来源与参考

  • Microsoft Learn:Select-String

相关工具

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