Ann*_*ema 2 powershell filter deleting owner
由于勒索软件攻击(没什么大不了的,都是从备份中恢复的)我想清理网络共享上的目录和子目录,攻击发生在那里创建了大量乱码文件。它们都归在受感染 PC 上工作的用户所有。
到目前为止,我最好的尝试是这样的:
Get-ChildItem Z:\ -Recurse | get-acl | where {($_.Owner -eq "DOMAIN\username")} | foreach { $_.Delete()}
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为get-acl
不支持$_.Delete()
这$
或者$_
是不是我的问题,我认为。我确实有一些其他可能的命令。它们运行。
就像这里的这个:
Get-ChildItem -filter "~*.*" -path Z:\ -recurse | where {($_.LastWriteTime -lt (get-date).AddDays(-7))} | foreach { $_.Delete()}
Run Code Online (Sandbox Code Playgroud)
几天以来,我一直使用它来删除通过从备份中恢复文件而创建的文件,而这些文件是由未受恶意软件影响的备份文件创建的。我只是恢复了整个共享
但我会试一试。
关于您的其他提示,我必须解释一下,运行勒索软件的用户帐户在该网络驱动器上没有自行创建的文件。该用户的读取权限就足够了。
不幸的是,此共享对每个人都有更改访问权限。那是在早期,我们都与勒索软件没有太多关系。当然,等主要工作完成后,我会更改这些访问权限。
所以请我需要建议以删除此特殊帐户拥有的文件。
首先,您的代码中有一些拼写错误。where-clause 中列表的单个对象由$_
而非寻址$
。
而你正在考虑即将到来的事情。你的方法有点复杂。试试这个:)
Get-ChildItem Z:\ -Recurse | where { $_.GetAccessControl().Owner -eq "DOMAIN\username"} | Remove-Item
Run Code Online (Sandbox Code Playgroud)
虽然就我个人而言,我不觉得这真的是最好的方法,因为所有者可能并不总是您认为的那个人。
归档时间: |
|
查看次数: |
1210 次 |
最近记录: |