📄 PowerShell - 文件 I/O 操作
PowerShell 提供了丰富的命令用于对文件内容进行读取(Input)和写入(Output)操作,支持简单的文本处理,也可以进行高性能的流式读写。
一、读取文件内容(Input)
1. Get-Content —— 读取文本文件内容
📌 作用
逐行读取文件内容,默认返回字符串数组。
📘 命令格式
Get-Content [-Path] <string> [-Encoding <string>] [-TotalCount <int>] [-Tail <int>]
📘 常用参数
| 参数 | 说明 |
|---|---|
-Path |
文件路径 |
-Encoding |
指定字符编码(UTF8、ASCII等) |
-TotalCount |
只读取前 N 行 |
-Tail |
只读取最后 N 行(类似 tail) |
-Raw |
读取为一个完整字符串而非逐行数组 |
✅ 示例
Get-Content "log.txt" # 逐行读取
Get-Content "log.txt" -TotalCount 10 # 读取前 10 行
Get-Content "log.txt" -Tail 5 # 读取最后 5 行
Get-Content "log.txt" -Raw # 整个内容为一个字符串
2. 使用 StreamReader(适用于大文件)
$reader = [System.IO.StreamReader]::new("bigfile.txt")
while (!$reader.EndOfStream) {
$line = $reader.ReadLine()
Write-Output $line
}
$reader.Close()
二、写入文件内容(Output)
1. Set-Content —— 写入并覆盖文件
📌 作用
将数据写入文件,如果文件已存在会覆盖内容。
📘 命令格式
Set-Content -Path <string> -Value <string[]> [-Encoding <string>]
✅ 示例
Set-Content -Path "output.txt" -Value "Hello World"
2. Add-Content —— 向文件追加内容
📌 作用
不覆盖原文件,追加内容到文件末尾。
Add-Content -Path "output.txt" -Value "Another Line"
3. Out-File —— 将命令输出写入文件
📌 作用
用于将管道的输出写入文件,常与管道 | 结合。
📘 命令格式
<command> | Out-File -FilePath <string> [-Append] [-Encoding <string>]
✅ 示例
Get-Process | Out-File -FilePath "process.txt"
三、其他相关命令
1. Clear-Content —— 清空文件内容
Clear-Content -Path "log.txt"
2. Export-Csv / Import-Csv —— 操作结构化 CSV 数据
✅ 导出对象到 CSV
Get-Process | Select-Object Name, Id | Export-Csv -Path "procs.csv" -NoTypeInformation
✅ 从 CSV 读取为对象
$data = Import-Csv -Path "procs.csv"
$data[0].Name
3. ConvertTo-Json / ConvertFrom-Json —— JSON 文件处理
✅ 导出 JSON
Get-Date | ConvertTo-Json | Set-Content "date.json"
✅ 读取 JSON
$json = Get-Content "date.json" -Raw | ConvertFrom-Json
$json.DayOfWeek
四、实用技巧与组合
1. 写入带时间戳的日志
$time = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
Add-Content -Path "log.txt" -Value "$time - Task completed"
2. 读取某文件并替换内容
(Get-Content "notes.txt") -replace "old", "new" | Set-Content "notes.txt"
3. 批量处理多个文件内容
Get-ChildItem *.txt | ForEach-Object {
$content = Get-Content $_.FullName
# 处理逻辑...
}
五、常用编码类型说明
| 编码名称 | 说明 |
|---|---|
ASCII |
美国标准字符编码 |
UTF8 |
推荐使用,兼容性强 |
Unicode |
UTF-16 编码 |
OEM |
控制台默认编码(可能乱码) |
六、命令总结表
| 命令 | 说明 |
|---|---|
Get-Content |
读取文本文件内容 |
Set-Content |
写入文件(覆盖原内容) |
Add-Content |
追加内容到文件末尾 |
Out-File |
将命令输出写入文件 |
Clear-Content |
清空文件内容 |
Export-Csv |
将对象导出为 CSV 文件 |
Import-Csv |
从 CSV 文件读取为对象集合 |
ConvertTo-Json |
将对象转换为 JSON 格式 |
ConvertFrom-Json |
从 JSON 字符串转换为对象 |
[StreamReader] |
用于高效逐行读取大文件内容 |

浙公网安备 33010602011771号