ファイルをすべて読み込む
ReadToEndメソッドを使用すると、ストリームの現在位置からファイルの終端までを読み込むことができます。
ファイルの終端まで読み込んだ結果を変数に保存するには下記のようにします。
PS> $contents = $sr.ReadToEnd()

ReadToEndメソッドで読み込みを行うと、ストリームの現在位置はファイルの終端に移動するため、これ以降読み取り操作は行えません。
Closeメソッドを使用してストリームを閉じます。
1行ずつ読み込む
ReadLineメソッドを使用するとファイルを1行ずつ読み込むことができます。
試しに下記のテキストファイル(aiueo.txtとしてShift-JISで保存)で1行ずつ読み込みを行います。
あいうえお かきくけこ さしすせそ たちつてと なにぬねの
下記のようにしてインスタンスを作成します。
PS> $sr = New-Object System.IO.StreamReader("C:\Work\aiueo.txt",[Text.Encoding]::GetEncoding("Shift_Jis"))

1行ずつ読み込むためにReadLineメソッドを実行します。
PS> $sr.ReadLine() あいうえお

ReadLineメソッドは1行読み込むとストリームの現在位置を次へ進めます。このため、もう1度ReadLineメソッドを実行するとテキストファイルの2行目を読み込みます。
PS> $sr.ReadLine() かきくけこ

ファイルサイズが大きい場合には、このように毎回ReadLineメソッドを実行するのは現実的ではないため、通常はループによる読み取りを行います。
ReadLineメソッドは読み出す行がない場合にはNullを返すのでWhileを利用して下記のように記述することができます。
PS C:\Work> while ( ($line = $sr.ReadLine()) -ne $null )
>> {
>> $line #ここに読み取った行を処理するコードを記述
>> }
>>

1文字ずつ読み込む
Readメソッドを使用するとファイルから1文字ずつ読み取ることができます。Readメソッドも1文字読み取った後はストリームの現在位置を次へ進めます。
次に読み取る文字があるかどうかを確認するには、Peekメソッドを使用します。Peekメソッドは読み取る文字がない場合には-1を返します。
以上を踏まえ下記にWhileを使用して1文字ずつ読み取る例を示します。
PS C:\Work> while ( $sr.Peek() -gt -1 )
>> {
>> [System.Convert]::ToChar($sr.Read())
>> }

Readメソッドはキャラクタコードを返すため、[System.Convert]::ToChar()メソッドで変換しています。
