工作中,經常用到Powershell中的Get-Content來讀取日志內容。
常用到以下代碼:

1 $content = Get-Content -Path "F:\temp\test\01.txt" 2 for($i=0; $i -lt $content.Count; $i++) { 3 Write-Host $content[$i] 4 }
● 當被讀取的文件內容超過1行時,以上代碼是不存在問題的。
輸出結果如下:
● 當被讀取的文件內容只有1行時,運行腳本之后會發現腳本不輸出任何內容!
原因在於當文件內容只有1行時,Powershell會默認的將$content當成字符串而不是字符串數組。
只有1行:
超過1行:
解決方法:
方案1:

1 $content = @(Get-Content -Path "F:\temp\test\01.txt")
使用 @() 將Get-Content命令括起來之后,當文件內容被轉換成為數組:
輸出如下結果:
方案2:

1 foreach($line in $content) { 2 Write-Host $line 3 }
果斷正常輸出結果。
同理Get-ChildItem也應當注意。