Удалить папку с контентом исключить папку с контентом - PullRequest
0 голосов
/ 20 сентября 2019

Мне нужно написать скрипт, который удаляет папки с временем последней записи ~ 7 дней.Но держите 2 «специальные» папки с содержимым.

Вот мой сценарий:

$source = "D:\TestOrdner"
$time = (Get-Date)#.AddDays(-7)

Start-Transcript "C:\log_files\log.txt"

gci $source -Recurse  | ?{$_.LastWriteTime -lt $time} | del -Force -Verbose

Stop-Transcript

Моя единственная проблема - как ИСКЛЮЧИТЬ папки с содержимым?Моя папка для хранения: D:\TestOrdner\Test.

1 Ответ

0 голосов
/ 20 сентября 2019

Будьте осторожны при удалении папок профиля пользователя, поэтому держите переключатель -WhatIf до тех пор, пока вы не будете абсолютно уверены, ниже не удалит папки, которые не должны быть удалены.

Это может бытьхорошая идея Move этих папок вместо их удаления?

Так как это касается папки профиля пользователя, где каждый пользователь имеет свою собственную папку прямо под корневой папкой, * 1009 не требуется* включите Get-ChildItem

Во всяком случае, это должно сделать это:

$source    = "D:\TestOrdner"
$time      = (Get-Date).AddDays(-7)

Start-Transcript "C:\log_files\log.txt"

Get-ChildItem $source -Directory -Exclude 'Administrator','Default','Public' | 
    Where-Object {$_.LastWriteTime -lt $time} | 
    Remove-Item -Recurse -Force -confirm:$false -WhatIf

Stop-Transcript
...