Из-за атаки программы-вымогателя (ничего страшного, все восстановлено из резервной копии) я хочу очистить каталоги и подкаталоги в общей сетевой папке, где произошла атака, чтобы создать много зашифрованных файлов. Все они принадлежат пользователю, работающему на зараженном ПК.
Моя лучшая попытка до сих пор выглядит так:
Get-ChildItem Z:\ -Recurse | get-acl | where {($_.Owner -eq "DOMAIN\username")} | foreach { $_.Delete()}
Но не работает из-за get-acl
не поддерживает $_.Delete()
это $
или $_
Думаю, это не моя проблема. У меня есть еще несколько более вероятных команд. Они бегут.
Как этот здесь:
Get-ChildItem -filter "~*.*" -path Z:\ -recurse | where {($_.LastWriteTime -lt (get-date).AddDays(-7))} | foreach { $_.Delete()}
Я использую это несколько дней, чтобы удалять файлы, которые были созданы путем восстановления файлов из резервной копии, которые не были затронуты вредоносным ПО. Я просто восстановил всю долю
Но я попробую.
Что касается вашего другого совета, я должен объяснить, что учетная запись пользователя, которая запускала программу-вымогатель, не имеет самостоятельно созданных файлов на этом сетевом диске. Этому пользователю было бы достаточно разрешения на чтение.
К сожалению, у этой папки есть доступ к изменениям для всех. Это из прежних времен, когда все мы не имели особого отношения к программам-вымогателям. Конечно, я изменю эти права доступа, когда основная работа будет сделана.
Поэтому мне нужен совет, чтобы удалить файлы, принадлежащие этой специальной учетной записи.
Во-первых, в вашем коде были опечатки. К отдельному объекту списка в предложении where обращается $_
не $
.
И вы думали за углом. Ваш подход был немного сложным. Попробуйте вместо этого :)
Get-ChildItem Z:\ -Recurse | where { $_.GetAccessControl().Owner -eq "DOMAIN\username"} | Remove-Item
Хотя лично я не считаю, что это действительно лучший подход, поскольку Владелец не всегда может быть тем, кем вы его себе представляете.