Closed
Description
Description
It does not appear to be possible to change the LastWriteTime or LastAccessTime of a symlink. It works on hardlinks.
PS C:\src\t> $SleepTime = 61
PS C:\src\t> $BaseDir = 'C:\src\t'
PS C:\src\t> $BaseFile = Join-Path -Path $BaseDir -ChildPath 'yy.txt'
PS C:\src\t> $SymlinkFile = Join-Path -Path $BaseDir -ChildPath 'yy-slink.txt'
PS C:\src\t> $HardlinkFile = Join-Path -Path $BaseDir -ChildPath 'yy-hlink.txt'
PS C:\src\t> if (Test-Path -Path $BaseFile) { Remove-Item -Path $BaseFile }
PS C:\src\t> if (Test-Path -Path $SymlinkFile) { Remove-Item -Path $SymlinkFile }
PS C:\src\t> if (Test-Path -Path $HardlinkFile) { Remove-Item -Path $HardlinkFile }
PS C:\src\t> New-Item -Path $BaseFile -ItemType File -Value "this is a new file`r`n"
Directory: C:\src\t
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2020-07-06 14:23 20 yy.txt
PS C:\src\t> New-Item -ItemType SymbolicLink -Path $SymlinkFile -Target $BaseFile
Directory: C:\src\t
Mode LastWriteTime Length Name
---- ------------- ------ ----
la--- 2020-07-06 14:23 0 yy-slink.txt -> C:\src\t\yy.txt
PS C:\src\t> Get-ChildItem -Path 'C:\src\t' -Filter 'yy*.txt' | Format-List 'Name','*Time'
Name : yy.txt
CreationTime : 2020-07-06 14:23:41
LastAccessTime : 2020-07-06 14:23:41
LastWriteTime : 2020-07-06 14:23:41
Name : yy-slink.txt
CreationTime : 2020-07-06 14:23:41
LastAccessTime : 2020-07-06 14:23:41
LastWriteTime : 2020-07-06 14:23:41
PS C:\src\t> Start-Sleep -Seconds $SleepTime
PS C:\src\t> $NewTimestamp = Get-Date
PS C:\src\t> Set-ItemProperty -Path $SymlinkFile -Name LastAccessTime -Value $NewTimestamp
PS C:\src\t> Set-ItemProperty -Path $SymlinkFile -Name LastWriteTime -Value $NewTimestamp
PS C:\src\t> Start-Sleep -Seconds 5
PS C:\src\t> Get-ChildItem -Path $BaseDir -Filter 'yy*.txt' | Format-List 'Name','*Time'
Name : yy.txt
CreationTime : 2020-07-06 14:23:41
LastAccessTime : 2020-07-06 14:24:42
LastWriteTime : 2020-07-06 14:24:42
Name : yy-slink.txt
CreationTime : 2020-07-06 14:23:41
LastAccessTime : 2020-07-06 14:23:41
LastWriteTime : 2020-07-06 14:23:41
PS C:\src\t> & cmd.exe /C "DIR /TA yy*"
Volume in drive C has no label.
Volume Serial Number is 0E33-300C
Directory of C:\src\t
2020-07-06 14:23 <SYMLINK> yy-slink.txt [C:\src\t\yy.txt]
2020-07-06 14:24 20 yy.txt
2 File(s) 20 bytes
0 Dir(s) 739,939,135,488 bytes free
PS C:\src\t> & cmd.exe /C "DIR /TW yy*"
Volume in drive C has no label.
Volume Serial Number is 0E33-300C
Directory of C:\src\t
2020-07-06 14:23 <SYMLINK> yy-slink.txt [C:\src\t\yy.txt]
2020-07-06 14:24 20 yy.txt
2 File(s) 20 bytes
0 Dir(s) 739,939,135,488 bytes free
PS C:\src\t> New-Item -ItemType HardLink -Path $HardlinkFile -Target $BaseFile
Directory: C:\src\t
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2020-07-06 14:24 20 yy-hlink.txt
PS C:\src\t> Get-ChildItem -Path $BaseDir -Filter 'yy*.txt' | Format-List 'Name','*Time'
Name : yy.txt
CreationTime : 2020-07-06 14:23:41
LastAccessTime : 2020-07-06 14:24:42
LastWriteTime : 2020-07-06 14:24:42
Name : yy-hlink.txt
CreationTime : 2020-07-06 14:23:41
LastAccessTime : 2020-07-06 14:24:42
LastWriteTime : 2020-07-06 14:24:42
Name : yy-slink.txt
CreationTime : 2020-07-06 14:23:41
LastAccessTime : 2020-07-06 14:23:41
LastWriteTime : 2020-07-06 14:23:41
PS C:\src\t> Start-Sleep -Seconds $SleepTime
PS C:\src\t> $NewTimestamp = Get-Date
PS C:\src\t> Set-ItemProperty -Path $HardlinkFile -Name LastAccessTime -Value $NewTimestamp
PS C:\src\t> Set-ItemProperty -Path $HardlinkFile -Name LastWriteTime -Value $NewTimestamp
PS C:\src\t> Start-Sleep -Seconds 5
PS C:\src\t> Get-ChildItem -Path $BaseDir -Filter 'yy*.txt' | Format-List 'Name','*Time'
Name : yy.txt
CreationTime : 2020-07-06 14:23:41
LastAccessTime : 2020-07-06 14:24:42
LastWriteTime : 2020-07-06 14:24:42
Name : yy-hlink.txt
CreationTime : 2020-07-06 14:23:41
LastAccessTime : 2020-07-06 14:25:50
LastWriteTime : 2020-07-06 14:25:50
Name : yy-slink.txt
CreationTime : 2020-07-06 14:23:41
LastAccessTime : 2020-07-06 14:23:41
LastWriteTime : 2020-07-06 14:23:41
PS C:\src\t> & cmd.exe /C "DIR /TA yy*"
Volume in drive C has no label.
Volume Serial Number is 0E33-300C
Directory of C:\src\t
2020-07-06 14:25 20 yy-hlink.txt
2020-07-06 14:23 <SYMLINK> yy-slink.txt [C:\src\t\yy.txt]
2020-07-06 14:24 20 yy.txt
3 File(s) 40 bytes
0 Dir(s) 739,939,672,064 bytes free
PS C:\src\t> & cmd.exe /C "DIR /TW yy*"
Volume in drive C has no label.
Volume Serial Number is 0E33-300C
Directory of C:\src\t
2020-07-06 14:25 20 yy-hlink.txt
2020-07-06 14:23 <SYMLINK> yy-slink.txt [C:\src\t\yy.txt]
2020-07-06 14:24 20 yy.txt
3 File(s) 40 bytes
0 Dir(s) 739,939,672,064 bytes free
Configuration
C:>dotnet --info
.NET SDK (reflecting any global.json):
Version: 5.0.100-preview.5.20279.10
Commit: 8139f1b74e
Runtime Environment:
OS Name: Windows
OS Version: 10.0.18363
OS Platform: Windows
RID: win10-x64
Base Path: C:\Users\pwatson\AppData\Local\Microsoft\dotnet\sdk\5.0.100-preview.5.20279.10\
Host (useful for support):
Version: 5.0.0-preview.5.20278.1
Commit: 4ae4e2fe08
.NET SDKs installed:
2.2.402 [C:\Program Files\dotnet\sdk]
3.0.100-rc1-014190 [C:\Program Files\dotnet\sdk]
3.1.301 [C:\Program Files\dotnet\sdk]
5.0.100-preview.5.20279.10 [C:\Users\pwatson\AppData\Local\Microsoft\dotnet\sdk]
.NET runtimes installed:
Microsoft.AspNetCore.All 2.1.19 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.19 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.0.0-rc1.19457.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.0-preview.5.20279.2 [C:\Users\pwatson\AppData\Local\Microsoft\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.19 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.0.0-rc1-19456-20 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.0-preview.5.20278.1 [C:\Users\pwatson\AppData\Local\Microsoft\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.0.0-rc1-19456-20 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 3.1.4 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 3.1.5 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 5.0.0-preview.5.20278.3 [C:\Users\pwatson\AppData\Local\Microsoft\dotnet\shared\Microsoft.WindowsDesktop.App]
Regression?
Unknown
Other information
PS C:\src\t> $PSVersionTable
Name Value
---- -----
PSVersion 7.0.1
PSEdition Core
GitCommitId 7.0.1
OS Microsoft Windows 10.0.18363
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0