안녕하세요 Powershell의 새로운 기능으로 기존 스크립트를 도살하거나 전에 bash로 작업했습니다.Powershell with Directories
나는 하나의 기준으로 모든 디렉토리를 나열한 다음 그 내용에 대해 칭찬을 시도하고 있습니다.
기본적으로 처리 된 모든 dir을 반복적으로 검색하고 31 일 동안 모든 항목을 제거하고 싶습니다. 나는 아래 또는 그냥 항목으로 작업하려고
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 에코 때
$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
: 내가 너무에 대한이 아래 명령입니다 ls는 내 바탕 화면에서 모든 폴더를 반환하거나 삭제합니다!
$dirs | ForEach-Object { Get-ChildItem -Recurse -Force | Where-Object { !$_.PSIsContainer -eq $_.LastWriteTime -lt $limit } | Remove-Item -Force }
같은 나는 $를위한에서 DIR $ DIRS
를 사용하는 경우 내가 잘못 여기에 기초를 받고되어야합니다! 나는 경로를 하드 코딩 할 수 있지만 적절한 일을 사랑하는 것입니다.
건배,
$ _ PSIsContainer -eq $ _ LastWriteTime -lt $ 제한? 귀하의 상태가 잘못되었습니다. -eq를 -and로 바꾸십시오. –
위도 줄의'-eq'는'-and' 일 것입니다. 제거 항목에 테스트하는 동안'-whatif'를 추가 할 것입니다. – LotPings
'!'는'-not'이어야합니다; 또는'-eq' (equals)를'-ne' (같지 않음)으로 대체 할 수 있습니다. http://ss64.com/ps/syntax-compare.html – JohnLBevan