私の職業では、後で自分のローカルストレージに抽出する「外国の」PCからフォレンジックイメージを作成します。スレッドを使用して特定の拡張子を持つファイルを削除する特定の日付にファイルを無視する
データをクリーンアップするには、私に関係のないすべてのファイルを削除したいと考えています。 (オーディオ、ムービー、システムファイルなどに限定されない) 私たちは複数TBのデータを扱っているので、特にストレージがすべてフラッシュでディスクの制限があるため、スレッドを使用したいと思っていました。多少問題はありません。
最初の手動実行後に処理を高速化するには、スクリプトを1 より古いファイルから除外したいと思います(これはすでに手動で実行しています)。私がこれまで持っているもの
:
$IncludeFiles = "*.log", "*.sys", "*.avi", "*.mpg", "*.mkv", ".mp3", "*.mp4",
"*.mpeg", "*.mov", "*.dll", "*.mof", "*.mui", "*.zvv", "*.wma",
"*.wav", "*.MPA", "*.MID", "*.M4A", "*.AIF", "*.IFF", "*.M3U",
"*.3G2", "*.3GP", "*.ASF", "*.FLV", "*.M4V", "*.RM", "*.SWF",
"*.VOB"
$ScriptBlock = {
Param($mypath = "D:\")
Get-ChildItem -Path $mypath -Recurse -File -Include $file | Where-Object {
$_.CreationTime -gt (Get-Date).AddDays(-1)
}
foreach ($file in $IncludeFiles) {
Start-Job -ScriptBlock $ScriptBlock -ArgumentList $file
}
Get-Job | Wait-Job
$out = Get-Job | Receive-Job
Write-Host $out
動作しない唯一のものは、それだけで1 日より「若い」ファイルを参照することを制限です。もし私がそれなしでスクリプトを実行すると、それは完全に動作するようです。 (これは、私が削除したい拡張子のファイルのリストを与えるので)
あなたが投稿したコードは不完全です。 scriptblockは決して閉じられず、 '$ file'は未定義です。また、スクリプトブロックにコマンドを入力してジョブを開始しても、何も高速化することはできません。時間のかかる操作を複数のジョブとして並行して実行できるように、コマンドを分割する必要があります。 –
私はすべてのデータを1つの拡張子で検索してから次のものに移動するので、すべての拡張子を別のスレッドとして使いたいと思っていました。 – Michael