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.