PS 版本 2 的 powershell Get-Content -raw 替代方案

Los*_*het 3 powershell powershell-2.0

对于以后的 powershell 版本,我可以毫无问题地使用以下内容:

$contents = Get-Content $path -raw
if ($contents -match $regex) {
    $result = $matches[0]
}
Run Code Online (Sandbox Code Playgroud)

但是在 powershell 版本 2 中,Get-Content 没有 -raw 开关,但是如果没有 -raw 开关,正则表达式匹配步骤总是失败;$matches 似乎是 $null。

我不确定这个“原始”参数的内部工作原理,因为微软在各自的文档页面上提供了一个相当可悲的描述,所以我不确定如何解决它。

HAL*_*256 5

Get-Content -Raw 忽略换行符并将文件内容作为一个字符串读取。

以下是-Raw在 PowerShell 2.0中模拟 PowerShell 3.0+功能的两种方法:

$contents = [System.IO.File]::ReadAllText($path)

if ($contents -match $regex) {
    $result = $matches[0]
}
Run Code Online (Sandbox Code Playgroud)

或者:

$contents = Get-Content -Path $path | Out-String

if ($contents -match $regex) {
    $result = $matches[0]
}
Run Code Online (Sandbox Code Playgroud)