我的计算机上安装了多个程序(.exe),这些程序创建了" .dat"文件。 其中一个创建了非常大的文件。
我只想删除此程序创建的文件。
PS中是否有办法知道哪个程序创建了文件?
我尝试在以下代码中过滤它们:
Get-ChildItem $path -Filter "*.dat" -Recurse -Force |'
Where-Object {$_.CreationTime -lt $limit -and $_.LastAccessTime -lt $limit2 -and $_.Attributes -notmatch "Offline" } |'
Remove-Item -Force
答案 0 :(得分:2)
这是不可能的,除非你的程序以某种方式将属性标记到 .dat 文件上,然后你将读取该文件。
如果要查找哪个可执行文件可以创建相关文件,请使用Process Explorer。
答案 1 :(得分:1)
一种选择是执行" .exe程序"在不同的凭据下,每个exe一个不同的用户。然后,您可以使用get-acl来确定创建每个文件的人员:
$OWNER = "xxxx"
Get-ChildItem $path -Filter "*.dat" -Recurse -Force |'
Where-Object {Get-Acl $_.FullName -eq $OWNER -and $_.CreationTime -lt $limit -and $_.LastAccessTime -lt $limit2 -and $_.Attributes -notmatch "Offline" } |'
Remove-Item -Force
答案 2 :(得分:1)
我建议使用ProcessMonitor(http://technet.microsoft.com/en-gb/sysinternals/bb896645)。这将显示所有文件系统活动,并将快速显示哪些进程正在访问哪些文件。