脚本专栏 
首页 > 脚本专栏 > 浏览文章

PowerShell中读取多行文本示例

(编辑:jimmy 日期: 2024/11/16 浏览:3 次 )

适用于PowerShell3.0或者更高本版

有时,你可能会偶尔发现下面的代码:
复制代码 代码如下:
$FilePath = "$env:SystemRoot\WindowsUpdate.log"
$ContentsWithLinebreaks = (Get-Content $FilePath) -join "`r`n"

猜猜它,想干啥子奥,Get-Content 默认将文本文件以单行读取,并且返回一个多行数组,而-join操作符可以将它们转换成一个单独的字符串。而伴随着PowerShell3.0 的低调问世,有这么一个参数: -Raw,它可以非常高效的得到上面代码同样的结果:
复制代码 代码如下:
$FilePath = "$env:SystemRoot\WindowsUpdate.log"
$ContentsWithLinebreaks = (Get-Content $FilePath) -join "`r`n"
$ContentsWithLinebreaks2 = Get-Content $FilePath -Raw
$ContentsWithLinebreaks -eq $ContentsWithLinebreaks2

试着运行上面的代码, $ContentWithLinebreaks 和$ContentWithLinebreaks2可能比较的结果略微有所不同,其不同可能只是换行符而已。

那我们继续辨别真伪,果不其然:
复制代码 代码如下:
PS> $ContentsWithLinebreaks -eq $ContentsWithLinebreaks2.TrimEnd("`r`n")
True

上一篇:Powershell获取系统中所有可停止的服务
下一篇:用PowerShell代替批处理吧!
一句话新闻
微软与英特尔等合作伙伴联合定义“AI PC”:键盘需配有Copilot物理按键
几个月来,英特尔、微软、AMD和其它厂商都在共同推动“AI PC”的想法,朝着更多的AI功能迈进。在近日,英特尔在台北举行的开发者活动中,也宣布了关于AI PC加速计划、新的PC开发者计划和独立硬件供应商计划。
在此次发布会上,英特尔还发布了全新的全新的酷睿Ultra Meteor Lake NUC开发套件,以及联合微软等合作伙伴联合定义“AI PC”的定义标准。