次のような単純なものはどうでしょうか。
PS> gci . -r foo.txt
これは、foo.txt をフィルターとして指定する -filter パラメーターを (位置によって) 暗黙的に使用します。*.txt または foo?.txt を指定することもできます。StartsWith の問題は、大文字と小文字を区別しない比較を処理している間、/ と \ の両方が PowerShell で有効なパス区切り文字であるという問題がまだあることです。
ファイルが存在しない可能性があり、 $file と $directory の両方が絶対パスであると仮定すると、これを "PowerShell" の方法で実行できます。
(Split-Path $file -Parent) -replace '/','\' -eq (Get-Item $directory).FullName
ただし、パス / -> \ を正規化する必要があるため、これは素晴らしいことではありませんが、少なくとも PowerShell 文字列比較では大文字と小文字が区別されません。別のオプションは、IO.Path を使用してパスを正規化することです。
[io.path]::GetDirectoryName($file) -eq [io.path]::GetFullPath($directory)
これに関する 1 つの問題は、GetFullPath がプロセスの現在のディレクトリに基づいて相対パスを絶対パスにすることです。これは、多くの場合、PowerShell の現在のディレクトリと同じではありません。したがって、「$pwd\$directory」のように指定する必要がある場合でも、$directory が絶対パスであることを確認してください。