PowerShell實戰:Get-Content命令使用詳解
更新于:2025-04-01 12:04:35
 

一、Get-Content介紹

Get-Content 主要作用是獲取路徑指定位置的項(文本類檔)的內容,例如檔中的文字或函數的內容。 對於檔,內容一次讀取一行,並返回物件的集合,每個物件表示一行內容。

支援的格式主要包括:

文本:txt 等

文稿檔:bat、psl、vbs、sh等

後端檔:java、cs、cpp等

前端檔:html、css、js、vue、ts 等

配置檔:yml、xml、config 等

說明:

PowerShell 3.0以後的版本開始支援從項的開頭或末尾獲取指定數量的行。

對於包含中文字串的話建議指定編碼格式為utf8編碼避免出現亂碼的情況:-encoding utf8

  

二、語法格式

 

Get-Content

[-ReadCount ]

[-TotalCount ]

[-Tail ]

[-Path]

[-Filter ]

[-Include ]

[-Exclude ]

[-Force]

[-Credential ]

[-Delimiter ]

[-Wait]

[-Raw]

[-Encoding ]

[-AsByteStream]

[-Stream ]

[]

三、參數詳解

 

● -ReadCount:設置每次通過管道發送的內容行數。預設值為 1。 當值為0時一次發送所有文件內容。它的作用時影響顯示內容所需要的時間,值越大第一行顯示時間會變長,但合計的時間會減少,主要是針對哪些比較大的文件來說的。一般運維使用較少。

● -TotalCount:設置檔讀取的行數(從文件頭開始)也可以使用 head、first 等價替代,參數值為負數會讀取整個文件內容。

● -Tail:設置檔讀取的行數(從檔尾部開始),等價於last,參數值為負數會讀取整個文件內容。排查日誌的話使用比較頻繁。

● -Path:設置獲取文件的路徑,可以使用通配符,因此Get-Content 可以一次性讀取多個檔或者多個目錄的內容。

● -Filter:用來設置限定 Path 參數的篩選條件。

● -Include:包含一個或多個項作為字串數位,同樣是作為Path篩選條件使用

● -Exclude:排除一個或多個項作為字串數位,同樣是作為Path篩選條件使用

● -Force:可以替代唯讀屬性或創建目錄以完成檔路徑(可以針對作業系統隱藏檔使用)。一般使用不多。

● -Credential:用戶憑據相關,很少使用。

● -Delimiter:設置在讀取檔時將檔劃分為物件的分隔符,預設是\n。 可以使用此參數將大檔拆分為較小的檔,分隔符不被丟棄。

● -wait:設置輸出所有現有行后,使檔案保持打開狀態。 處於等待狀態, Get-Content 每秒檢查一次檔,並輸出新行(如果存在)。比較常見的是tomcat日誌檔,可以採用這種方式監控日誌的變化,排查問題。

● -Raw:設置忽略換行符,使得檔一行展示(會保留換行符)。

● -Encoding:設置獲取檔案內容的編碼格式。 預設值為 utf8NoBOM,推薦使用utf8避免出現亂碼。支援的格式有(ascii、ansi、bigendianunicode、unicode、utf8等等)

● -AsByteStream:設置文件內容應作為位元組流進行讀取,是6.0版本之後新增的功能參數。目前微軟官方的例子運行也有異常。

● -Stream:從檔案中獲取指定的備用 NTFS 檔流的內容。 輸入流名稱。不支援通配符。僅限Windows操作系統使用。

 

四、使用案例

 

4.1 獲取文件內容

get-content .\demo.txt -encoding utf8

4.2 獲取檔前三行內容

PS E:\test> get-content .\demo.txt -totalcount 3 -encoding utf8 1111 2222 3333 PS E:\test> get-content .\demo.txt -head 3 -encoding utf8 1111 2222 3333 PS E:\test> get-content .\demo.txt -first 3 -encoding utf8 1111 2222 3333 PS E:\test>  

4.3 獲取文件最後三行內容

PS E:\test> get-content .\demo.txt -tail 3 -encoding utf8  

4.4通過管道方式獲取最後兩行內容

注意:該方式獲取速度更快,對於大檔檢索非常有用。

4.5使用逗號作為分隔符

PS E:\test> get-content tt1.txt -Delimiter "," -encoding utf8 1111, 2222, 33333 PS E:\test> get-content tt1.txt -encoding utf8 1111,2222,33333

4.6 Filter方式讀取多個檔

獲取指定目錄下所有txt後綴的文件內容

  get-content -path E:\test\* -filter "*.txt" -encoding utf8  

4.7 Include方式讀取多個檔

使用Include獲取指定目錄下所有txt後綴的文件內容

get-content -path E:\test\* -include "*.txt" -encoding utf8