Что вам нужно, так это фильтр for-each (%) (точно не уверен, что это фильтр или командлет, но он имеет такой же синтаксис использования).
Попробуйте следующее
dir -recurse -filter "*.mp3" |
%{ $_.Name } |
%{ [IO::Path]::GetFileNameWithoutExtension($_) } |
sort
РЕДАКТИРОВАТЬ Обновление
Я изменил свой ответ с "select-object Name
" на "%{ $_.Name}
". Первый по существу берет свойство Name из значения конвейера и создает новый объект с единственным свойством указанного имени со значением исходного объекта. Последний обработает каждое значение в конвейере и передаст результат выполнения $_.Name
по конвейеру.