Regex will do that.
$File1 = Get-Content C:\Path\To\FileToChange.txt -Raw
$File2 = Get-Content C:\Path\To\NewContent.txt -Raw
$file1 -replace "(?s)(?<=----).*(?=====)","`n$file2`n"|Out-File C:\Path\To\NewFile.txt
Done. That reads both files in as multi-line strings, finds any text after '----' and before '====' and replaces it with the text in the second file. It prepends and appends a New Line around the text, so everything looks right, and you don't end up with ----uiop as a line or hjkl==== as a line.
Edit: If -Raw isn't supported in your version of PowerShell you should be able to use -ReadCount 0 instead. Or, if that fails you, try this:
(Get-Content <path>) -join "`n"