私はディレクトリ構造を調べ、各サブディレクトリにファイルの最新の7つのコピーを保存する方法について以前に質問しました。以下のスクリプトは作成されたものであり、うまく機能しますが、1つのディレクトリのみで動作します。私はディレクトリ全体を調べ、各サブディレクトリに最新の7つのファイルを保存する必要があります。x個のファイルを残して他のファイルをすべて削除する - 第2部
テストするには、Test1、Test2、Test3というサブディレクトリを持つC:\ Customerディレクトリ構造を作成しました。次に、トップレベルのC:\ Customerを含む各ディレクトリに12個のテストファイルを作成しました。ファイルの名前はTest1_Report_.txt - Test12です。下のスクリプトを実行すると、トップレベルのTest1、Test2のすべてのファイルが削除され、最新の7つのコピーがTest3に保存されました。私はここで何が欠けていますか?どんな助けでも大歓迎です。
$path = "C:\Customer"
$files = Get-ChildItem -Path $path -Recurse | Where-Object {-not $_.PsIsContainer} |where{$_.name -like "*_Report_*"}
$keep = 7
if ($files.Count -gt $keep) {
$files |Sort-Object CreationTime |Select-Object -First ($files.Count - $keep)| Remove-Item -Force
}
ディレクトリと_all_サブディレクトリから一度に_all_ファイルが取得され(!)、_all_個のファイルが7個保持されます。 Andyによって提案されているように、自分自身のために各フォルダをチェックする必要があります – Tom