【发布时间】:2020-02-10 07:51:08
【问题描述】:
修改现有文件后,我想了解用于修改文件的软件是否创建并保存了新文件(丢弃旧文件)或更改了原始文件。
目前我正在使用带有Get-ChildItem的powershell:
Get-ChildItem D: -Force | Select-Object Name, CreationTime, LastWriteTime, Length
这仅适用于相关软件未在新文件中重新应用原始 CreationTime 的情况。如果是这样 (like e.g. Excel does when editing existing files),无论原始文件被修改还是创建新文件,结果看起来都是一样的。我想我可以使用 object identifier 来做到这一点,但我没有设法用 power shell 实现它显示文件的对象 ID,我是否忽略了 properties 中的某些内容或者我必须使用完全不同的命令?
使用-Property * 显示所有属性,有点告诉我我完全走错了方向(它没有给我任何可用的属性,至少不适合我的用例):
Get-ChildItem D: -Force | Select-Object -Property *
我尝试了ID property,当然,它不适用于文件对象。从理论上讲,我可以从 NTFS 的 USN 日志中获取文件 ID,但不幸的是,在我的用例中,包含该文件的驱动器上的日志已停用。
【问题讨论】:
-
我在 stackoverflow.com/questions/5052477/… 中发现了一些其他方法,但无法让它们中的任何一个起作用 - 至少到目前为止
-
您实际上想用这个“ID”做什么?正如您发现的那样,程序可能只会混淆文件属性,例如创建日期,因此如果没有一些文件系统级别的日志,我不确定“更新”文件和编写新文件之间是否存在任何功能差异。如果你想通过文件内容,你可以使用 Get-FileHash 来获取文件数据的唯一哈希。
-
@Josh 正如我在第一句话中所说,我想检查哪些程序修改了现有文件以及哪些程序创建了新文件(丢弃原始文件)。由于文件将被更改,因此不确定校验和在这种情况下有何帮助?!
-
@Josh PS。一种可能的用例(或功能差异)是查看是否可以在兴奋地保存新版本后从驱动器上的已删除临时文件中恢复原始文件。
标签: powershell uniqueidentifier