You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell中使用Get-Content读取文本并在MessageBox保留换行

解决PowerShell MessageBox保留文本换行的问题

我来帮你搞定这个换行不显示的问题~ 你现在遇到的问题是因为Get-Content默认会把文本文件的每一行作为数组的一个元素返回,直接把这个数组传给MessageBox.Show()的话,PowerShell会自动把数组元素用空格拼接成一个字符串,自然就丢失了原来的换行格式。

下面给你两种可行的解决方案:

方案1:使用-Raw参数读取文件(推荐,PowerShell 3.0+支持)

-Raw参数会直接把整个文件内容读取成单个包含原始换行符的字符串,这样传给MessageBox就能完美保留换行:

Add-Type -AssemblyName PresentationCore,PresentationFramework
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageIcon = [System.Windows.MessageBoxImage]::Information

# 用-Raw读取正文,保留换行
$MessageBody = Get-Content -Path "$PSScriptRoot\text_body.txt" -Raw
# 标题一般不需要换行,不过如果你的标题文件有特殊格式也可以加-Raw
$MessageTitle = Get-Content -Path "$PSScriptRoot\text_title.txt" -Raw

# 补全你之前没写完的Show方法参数
$Result = [System.Windows.MessageBox]::Show($MessageBody, $MessageTitle, $ButtonType, $MessageIcon)

方案2:手动拼接换行符(兼容旧版PowerShell)

如果你的PowerShell版本低于3.0,没有-Raw参数,可以用-join把数组元素用系统换行符连接起来:

Add-Type -AssemblyName PresentationCore,PresentationFramework
$ButtonType = [System.Windows.MessageBoxButton]::OK
$MessageIcon = [System.Windows.MessageBoxImage]::Information

# 读取行数组后,用系统换行符拼接成带换行的字符串
$MessageBody = (Get-Content -Path "$PSScriptRoot\text_body.txt") -join [Environment]::NewLine
$MessageTitle = Get-Content -Path "$PSScriptRoot\text_title.txt" -join [Environment]::NewLine

$Result = [System.Windows.MessageBox]::Show($MessageBody, $MessageTitle, $ButtonType, $MessageIcon)

另外要注意:MessageBox的标题栏是不支持换行的,所以即使标题文件里有换行,显示的时候也会被忽略,所以标题部分其实可以不用处理换行,直接取第一行或者原样读取都可以~

内容的提问来源于stack exchange,提问作者Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:18:50