セットアップ
次のようなフォルダー構造があります。
C:\RootFolder
\file1.txt
\file2.txt
\license.txt
\Settings
\fileA.txt
\fileB.txt
\settings.txt
\OtherFolders
目標
license.txt と settings.txt 以外のすべてのファイルを削除します。
最終的には、次のものだけが残るようにしたいと思います。
C:\RootFolder
\license.txt
\Settings
\settings.txt
遠くへのスクリプト
$exclude = @('license.txt', 'settings.txt')
Get-ChildItem C:\RootFolder -recurse -exclude $exclude | foreach ($_) {remove-item $_.fullname -recurse:$false}
問題
特に -recurse:$false を指定しても、「再帰が指定されていない」ことを示すメッセージが常に各フォルダーに生成され、すべての子アイテムが削除されるというメッセージが表示されます。
この後、license.txt ファイルは残りますが、settings.txt ファイル (サブディレクトリ内) は残りません。