我有一个 powershell 脚本,正在将九 (9) 个文件从源文件夹移动到目标文件夹。
文件移动后,我将更新每个文件的 LastWriteTime 为
$currentTime = Get-Date
(Get-Item "somefilename").LastWriteTime = $currentTime.AddMinutes(1)
(Get-Item "someotherfilename").LastWriteTime = $currentTime.AddMinutes(2)
脚本运行后,所有修改的时间都相同!而且,它们是当前时间。它们都没有更新到未来时间。可能是什么问题。
我以管理员身份运行了该脚本,问题依旧。当我将 LastWriteTim 打印到控制台时,它具有正确的值,但是当我查看文件属性时,它具有错误的值。
答案1
我对此并不完全确定,但当你对目标文件夹没有足够的访问权限时,我过去曾看到过类似的问题。
修改(又称读写)权限和完全控制权限之间存在差异。
在许多文件系统上,需要完全控制权限才能更改文件的时间属性(和访问权限属性)。
如果您只有“修改”权限,则可以创建/删除文件,但不能更改 LastWrite 时间戳等属性。这将在复制文件时自动设置,并且可能与“$currenttime”相同,可能相差几秒钟,具体取决于脚本中发生的具体情况以及需要多少时间。
答案2
我知道这是一篇旧帖子,但也许这对将来的某些人有帮助:
直接从文件夹对象设置 lastwritetime 和 lastaccesstime 的方法似乎有问题。请改用 System.IO.Directory 的 SetLastAccessTime 和/或 SetLastWriteTime 方法:
[System.IO.Directory]::SetLastAccessTime($DestinationFolderPath,$NewDate) [System.IO.Directory]::SetLastWriteTime($DestinationFolderPath,$NewDate)