PowerShell在多个文件中检索关键字

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 这几天在看Powershell,感觉挺强大的,一个小任务,是用powershell实现多个文件中检索万行记录的脚本。刚开始想用用Get-Content 结合Where-Object来实现,发现检索的结果太慢,而且检索的条目显示出来后不知道来自哪个文件,这个虽然也容易实现,但是经过对多种方法的探索,我发现竟然一条强大的命令竟然可以实现所有这些需求,而且超快的。

     这几天在看Powershell,感觉挺强大的,一个小任务,是用powershell实现多个文件中检索万行记录的脚本。刚开始想用用Get-Content 结合Where-Object来实现,发现检索的结果太慢,而且检索的条目显示出来后不知道来自哪个文件,这个虽然也容易实现,但是经过对多种方法的探索,我发现竟然一条强大的命令竟然可以实现所有这些需求,而且超快的。

    一般用于IIS日志分析,由于主要是介绍这个PS命令的,IIS日志是从服务器端抓取的,这里仅就是测试用的一半数据。

  首先进入到相应目录,查看当前目录下的文件,其中四个log文件是用来测试的。如下:

 

然后就用下面这条命令实现那个强大的功能:

比如要搜索关键字write,则输入write回车之后,搜索到的结果如下(仅截取部分,这里由于隐私,日志文件是俺造的,只是数据量比较大,内容纯属虚构~~):

可以将这条语句赋给一个临时变量,来查看一下在这瞬间查出了多少数据:

其实也不多,4个日志文件中瞬间查出了500条数据,其实这个看不出来,因为我造的数据量还不够大。。。

下面对这条强大的命令简单解释下:

整体其实就是使用了Select-String这个命令,具体用法参考:

http://technet.microsoft.com/zh-cn/library/dd315403.aspx

Get-ChildItem是得到当前面目录下的所有项,然后通过管道| 输入给?(就是Where-Object的别名)来筛选,及筛选当前目录下的log文件,$_代表当前对象,即前面查出的结果,-like使用了模式匹配,$(Read-Host)是从控制台读入,类似C#中的ReadLine()(相应的标准输出是Write-Host),即当用户输入一个关键字后,命令会从后向前的执行。

  由于是刚入门,如有出错,大神们多多指教。

 

 

 

作者: zhoujie
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,不然我担心博客园找你算账
如果您觉得本文对你有帮助,请竖起您的大拇指右下角点推荐,也可以关注我
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
网络协议 网络安全
Powershell免杀(无文件落地免杀)
无文件落地 顾名思义,无需将恶意文件传到目标服务器/机器上,直接利用powershell的特性加载到内存执行。为了在红队行动中更隐蔽的实施攻击以及横向移动,同时还可以解决目标不出网只能通过dns上线时的棘手问题,利用powershell可以避免一行行echo。 通过两种方式进行无文件落地的免杀,一种是出网的情况,另一种为不出网情况。 声明: 文章内容仅供网络安全爱好者学习使用,请勿用文章中提到的技术或工具做违法的事情,否则后果自负。
1134 0
|
3月前
|
存储 JSON JavaScript
|
3月前
PowerShell快速修改多个文件的名称
【8月更文挑战第28天】在PowerShell中批量重命名文件可通过以下方法实现:1)使用`Rename-Item`命令逐一重命名;2)通过循环批量处理特定模式的文件名更改;3)利用正则表达式进行复杂模式匹配与替换。操作前请确保验证命令并备份文件。
200 1
|
6月前
|
定位技术 Python
PowerShell批量修改、替换大量文件的文件名
PowerShell批量修改、替换大量文件的文件名
134 1
|
6月前
|
前端开发 微服务 Windows
PowerShell 命令窗口执行 pnpm 命令报错 无法加载文件 pnpm.ps1,因为在此系统上禁止运行脚本
PowerShell 命令窗口执行 pnpm 命令报错 无法加载文件 pnpm.ps1,因为在此系统上禁止运行脚本
|
Windows
powershell配置anaconda及解决【无法加载文件C:\Users\xxx\Documents\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本】的问题
powershell配置anaconda及解决【无法加载文件C:\Users\xxx\Documents\WindowsPowerShell\profile.ps1,因为在此系统上禁止运行脚本】的问题
2541 0
|
安全 Linux 网络安全
新一代--Powershell 无文件挖矿病毒
Powershell 无文件挖矿病毒
|
存储 运维 Linux
【运维】PowerShell编程 目录文件相关方法的封装与案例详解
本文实现一个目录管理类,归纳了 Powershell 中常用的文件路径方法。这些方法可以迅速方便的用于 Powershell 编写大型运维脚本中。以简单使用为目的封装常用目录文件操作。完成源代码在作者的github上可以找到。
191 0
|
Web App开发 前端开发 JavaScript
vbs学习,书籍,看书笔记(5) 客户端web脚本 .Power shell 使用 脚本文件的类型2
vbs学习,书籍,看书笔记(5) 客户端web脚本 .Power shell 使用 脚本文件的类型2
vbs学习,书籍,看书笔记(5) 客户端web脚本 .Power shell 使用 脚本文件的类型2
|
Java Shell 程序员
Power Shell 脚本——基于curl自动批量获取FTP服务器上的日志文件
Power Shell 脚本——基于curl自动批量获取FTP服务器上的日志文件
291 0
Power Shell 脚本——基于curl自动批量获取FTP服务器上的日志文件