PowerShell 遍历文件
Windows PowerShell 在命令行指令上运行,为 Windows、Mac 和 Linux 用户提供类似于基于命令行的类 Unix 系统的灵活性。
PowerShell 是支持脚本、自动化并包含配置管理框架的解决方案。PowerShell 可以被视为支持跨平台自动化设施的脚本解决方案。
PowerShell 由 Microsoft 合作开发和发布。从 Windows 7 开始的所有 Windows 版本中都安装了 PowerShell。
但是,如果是 macOS 计算机,则必须下载并安装适合你的 macOS 版本的 PowerShell 版本。
PowerShell 的自动化功能对于在服务器等环境中自动执行复杂任务非常有用,在这些环境中,需要维护、处理、比较和分析诸如系统日志文件之类的复杂文件。
PowerShell 支持通过循环处理这些日志文件、拖尾文件以等待文件更改、比较不同文件以了解更改等。
我们将通过他的文章重点介绍遍历目录中的文件。当我们遍历一组文件时,我们可以比较这些文件,在这些文件中找到特定的东西并编辑这些文件。
我们正在使用 Windows 10 机器来执行以下操作。你可以尝试使用你的版本以查看相同的输出。
使用 Get-ChildItem
和 get-Content
循环并检索日志文件的内容
日志文件的目录很大,必须根据系统管理员的不同要求进行编辑和编辑。
因此,我们将讨论在此上下文中循环文件的通用方法。Foreach-Object
应用于遍历项目。
我们正在尝试做的事情有点复杂。
- 首先,遍历文件列表,按
file.txt
文件类型过滤用于测试目的。Foreach-Object
for
循环用于遍历文件。 - 然后,我们将寻找包含
AA
的文件。我们用作输入的文件的屏幕截图如下图 1 所示。 Get-Content
用于获取过滤类型文件的内容。- 然后,所有文件都经过查找匹配行。
我们要删除文件中所有不包含 AA
的行。
- 然后,通过
Set-Content
命令,我们可以输出仅包含过滤值的行。 - 使用过滤后的行创建具有给定结尾的新文件。
在这里,下图包含输入文件。
以下是可用于执行上述功能的代码。
C:\Users\Agni> Get-ChildItem "C:\Users\Agni" -Filter *.txt |
>> Foreach-Object {
>> $content = Get-Content $_.FullName
>>
>>
>> $content | Where-Object {$_ -match 'AA'} | Set-Content $_.FullName
>>
>>
>> $content | Where-Object {$_ -match 'AA'} | Set-Content ($_.FullName + '_out.log')
>> }
然后使用输出文件保存包含过滤行的值。
以下是更改后的输出文件。在这里我们必须记住,原始文件也只会更改为具有过滤值,并且所有其他行都将被删除。
此处的第一张图像将显示命令运行后的原始文件。
下图显示了 PowerShell 创建的输出文件。
因此,这个特定的命令可以与不同的文件类型一起使用来执行上述任务。我们需要练习将其与 .log
文件一起使用,这些文件包含大数据行,很难手动完成。
在这种情况下,你可以按 .log
文件过滤以获取指定位置的日志文件。
这不是完成此任务的唯一方法。但最被接受的方法之一是轻松有效。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.