获取在Powershell中创建文件的应用程序/程序

时间:2014-08-14 07:43:26

标签: windows powershell powershell-v3.0

我的计算机上安装了多个程序(.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

3 个答案:

答案 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)。这将显示所有文件系统活动,并将快速显示哪些进程正在访问哪些文件。

相关问题