Here is a code sample which will give you the full file path to the files you're looking for.
dir . -Recurse -Filter *.dll | ? { -not $_.PSIsContainer } | ? { $_.FullName.ToLower().Contains( [IO.Path]::DirectorySeparatorChar + [IO.Path]::GetFileNameWithoutExtension( $_.Name.ToLower() ) + [IO.Path]::DirectorySeparatorChar ) } | Select -ExpandProperty FullName
Breaking it down, we have:
dir . -Recurse -Filter *.dll
This will search the current directory and its children recursively for all files that have a .dll file extension:
? { -not $_.PSIsContainer }
This will eliminate directories that end in .dll. Unlikely, but possible
? { $_.FullName.ToLower().Contains( [IO.Path]::DirectorySeparatorChar + [IO.Path]::GetFileNameWithoutExtension( $_.Name.ToLower() ) + [IO.Path]::DirectorySeparatorChar }
This will filter it down to the DLL files that have a file name the same as the name of a directory above it in the path.
Select -ExpandProperty FullName
This will give you the full file path.
You can then follow the answer to this question here to get the FileVersion.