В PowerShell 3.0 и ниже вы можете попробовать просто сделать это:
Remove-Item -recurse c:\temp\* -exclude somefile.txt,foldertokeep
Если есть какой-то параметр, который мне не хватает, это, похоже, делает трюк ...
Изменить: см. комментарии ниже, поведение Remove-Item изменилось после PS3, это решение больше не подходит.