PowerShell 遍历文件

Migel Hewage Nimesha 2022年5月16日
PowerShell 遍历文件

Windows PowerShell 在命令行指令上运行,为 Windows、Mac 和 Linux 用户提供类似于基于命令行的类 Unix 系统的灵活性。

PowerShell 是支持脚本、自动化并包含配置管理框架的解决方案。PowerShell 可以被视为支持跨平台自动化设施的脚本解决方案。

PowerShell 由 Microsoft 合作开发和发布。从 Windows 7 开始的所有 Windows 版本中都安装了 PowerShell。

但是,如果是 macOS 计算机,则必须下载并安装适合你的 macOS 版本的 PowerShell 版本。

PowerShell 的自动化功能对于在服务器等环境中自动执行复杂任务非常有用,在这些环境中,需要维护、处理、比较和分析诸如系统日志文件之类的复杂文件。

PowerShell 支持通过循环处理这些日志文件、拖尾文件以等待文件更改、比较不同文件以了解更改等。

我们将通过他的文章重点介绍遍历目录中的文件。当我们遍历一组文件时,我们可以比较这些文件,在这些文件中找到特定的东西并编辑这些文件。

我们正在使用 Windows 10 机器来执行以下操作。你可以尝试使用你的版本以查看相同的输出。

使用 Get-ChildItemget-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 文件过滤以获取指定位置的日志文件。

这不是完成此任务的唯一方法。但最被接受的方法之一是轻松有效。

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

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.