Powershell中使用Get-Content读取文件内容时的注意点
工作中,经常用到Powershell中的Get-Content来读取日志内容。
常用到以下代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 $content = @(Get-Content -Path "F:\temp\test\01.txt")
使用 @() 将Get-Content命令括起来之后,当文件内容被转换成为数组:
输出如下结果:
方案2:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 foreach($line in $content) { 2 Write-Host $line 3 }
果断正常输出结果。
同理Get-ChildItem也应当注意。