diff --git a/src/System.Management.Automation/namespaces/FileSystemContentStream.cs b/src/System.Management.Automation/namespaces/FileSystemContentStream.cs index 0ba8af62937..121a40f54e7 100644 --- a/src/System.Management.Automation/namespaces/FileSystemContentStream.cs +++ b/src/System.Management.Automation/namespaces/FileSystemContentStream.cs @@ -733,7 +733,7 @@ private bool ReadDelimited(bool waitChanges, ArrayList blocks, bool readBackward // (Trimming it during backward reading would not only be unnecessary, but could interfere with determining the correct start position.) string contentString = content.ToString(); blocks.Add( - !readBackward && contentString.EndsWith(actualDelimiter, StringComparison.Ordinal) + !readBackward && contentString.EndsWith(actualDelimiter, StringComparison.Ordinal) && !_isRawStream ? contentString.Substring(0, content.Length - actualDelimiter.Length) : contentString ); diff --git a/test/powershell/Modules/Microsoft.PowerShell.Management/Get-Content.Tests.ps1 b/test/powershell/Modules/Microsoft.PowerShell.Management/Get-Content.Tests.ps1 index b8a4d5faecd..d338a7cabea 100644 --- a/test/powershell/Modules/Microsoft.PowerShell.Management/Get-Content.Tests.ps1 +++ b/test/powershell/Modules/Microsoft.PowerShell.Management/Get-Content.Tests.ps1 @@ -285,3 +285,17 @@ baz } } } + +Describe "Get-Content -Raw test" -Tags "CI" { + + It "Reads - in full" -TestCases @( + @{character = "a`nb`n"; testname = "LF-terminated files"; filename = "lf.txt"} + @{character = "a`r`nb`r`n"; testname = "CRLF-terminated files"; filename = "crlf.txt"} + @{character = "a`nb"; testname = "LF-separated files without trailing newline"; filename = "lf-nt.txt"} + @{character = "a`r`nb"; testname = "CRLF-separated files without trailing newline"; filename = "crlf-nt.txt"} + ) { + param ($character, $filename) + Set-Content -Encoding Ascii -NoNewline "$TestDrive\$filename" -value $character + Get-Content -Raw "$TestDrive\$filename" | Should BeExactly $character + } +}