こんにちはPowershellには初めて、既存のスクリプトを盗んだり、以前はbashで作業していました。Powershell with Directories
私はすべてのディレクトリを1つの基準でリストし、それらの内容についての推薦を実行しようとしています。
基本的には、Processedという名前のすべてのディレクトリを再帰的に検索し、31日以上のすべてのアイテムを削除します。私はのためにそう持っていることは、以下のコマンドをされている:私は$ dirsにエコーする場合
$limit = (Get-Date).AddDays(-31)
$path = "C:\Users\mark.hodgson\Desktop\New folder"
$dirs = Get-ChildItem $path -Recurse -Directory| Where-Object {$_.PSIsContainer -eq $true -and $_.Name -match "Processed"} |select-object Fullname
をリストには以下のように良く見えます:
PS C:\Users\mark.hodgson\Desktop\New folder> echo $dirs
FullName
--------
C:\Users\mark.hodgson\Desktop\New folder\Folder1\FolderA\Processed
C:\Users\mark.hodgson\Desktop\New folder\Folder1\FolderB\Processed
C:\Users\mark.hodgson\Desktop\New folder\Folder2\Processed
C:\Users\mark.hodgson\Desktop\New folder\Folder3\Processed
C:\Users\mark.hodgson\Desktop\New folder\Folder4\Processed
C:\Users\mark.hodgson\Desktop\New folder\Folder5\Processed
んだけど、でも以下かなどの項目で作業しようとすると、それは私のデスクトップからすべてのフォルダを返すか、削除しますか?
$dirs | ForEach-Object { Get-ChildItem -Recurse -Force | Where-Object { !$_.PSIsContainer -eq $_.LastWriteTime -lt $limit } | Remove-Item -Force }
同じ、私は$のためでDIR $ dirsに
を使用している場合、私はここで間違っ基本を取得する必要があります!私はパスをハードコードすることができますが、適切な仕事をするのが大好きです。
乾杯、
hodgm
$ _ PSIsContainer -eq $ _ LastWriteTime -lt $限界?あなたの状態はここで間違っています。 -eqを-andに置き換えてください。 –
lat-lineの '-eq'は' -and'でなければなりません。削除項目 – LotPings
にテスト中に '-whatif'を追加すると'! 'は' -not'になります。または '-eq'(等号)を' -ne'(等しくない)に置き換えることができます。 http://ss64.com/ps/syntax-compare.html – JohnLBevan