【PowerShell】ファイルの更新日時・作成日時・アクセス日時を変更する方法

Powershell Powershell
この記事は約6分で読めます。

Windows 環境でファイル操作を行う際、更新日時(LastWriteTime)作成日時(CreationTime)アクセス日時(LastAccessTime)を変更する場合があるかと思います。

PowerShell では Set-ItemProperty コマンドレットを利用してこれらのタイムスタンプを簡単に変更できます。

この記事では、各タイムスタンプを変更する具体的な手順と確認方法を、サンプル付きでわかりやすく解説します。

広告

1.ファイルの更新日時を変更する方法

以下のコマンドで変更することが可能です。

Set-ItemProperty <ファイルのパス> `
 -Name LastWriteTime `
 -value "<変更したい時間(yyyy/mm/dd hh:MM:ss)>"

たとえば "2025/10/10 00:00:00" のように指定します。

1-1.変更前の更新日時を確認

以下の記事を参考に確認します。

PS C:\> $path = "C:\time-change.txt"
PS C:\> $folder_path = Split-Path $path
PS C:\> $file_name = Split-Path $path -Leaf
PS C:\> $shell_obj = New-Object -COMObject Shell.Application
PS C:\> $folder_obj = $shell_obj.Namespace($folder_path)
PS C:\> $file_obj = $folder_obj.ParseName($file_name)
PS C:\> $folder_obj.GetDetailsOf($file_obj, 3)
2025/10/10 12:06
PS C:\>

確認の結果、time-change.txt のファイル更新日時は 2025/10/10 12:06 であることが分かります。

1-2.更新日時を変更する

ファイルの更新日時を変更します。

今回は1か月前の時間(2025/09/10 00:00:00)を設定します。

Set-ItemProperty "C:\time-change.txt" -Name LastWriteTime -value "2025/09/10 00:00:00"

実行しても特に出力はありませんが、正常に変更されます。

1-3.変更後の更新日時を確認

再度更新日時を確認します。

PS C:\> $file_obj = $folder_obj.ParseName($file_name)
PS C:\> $folder_obj.GetDetailsOf($file_obj, 3)
2025/09/10 0:00
PS C:\>

再度オブジェクトを読み込んで確認すると 2025/09/10 0:00 に変更されていることが分かります。

2.作成日時とアクセス日時を変更する方法

作成日時とアクセス日時も同じようなコマンドで変更できます。

 # 作成日時の更新
Set-ItemProperty <ファイルのパス> `
 -Name CreationTime -Value "<yyyy/MM/dd HH:mm:ss>"

 # アクセス日時の更新
Set-ItemProperty <ファイルのパス> `
 -Name LastAccessTime -Value "<yyyy/MM/dd HH:mm:ss>"

2-1.変更前の状態を確認

まずは変更前の確認から。
それぞれ 2025/10 の日付であることが確認できます。

PS C:\> $path = "C:\time-change.txt"
PS C:\> $folder_path = Split-Path $path
PS C:\> $file_name = Split-Path $path -Leaf
PS C:\> $shell_obj = New-Object -COMObject Shell.Application
PS C:\> $folder_obj = $shell_obj.Namespace($folder_path)
PS C:\> $file_obj = $folder_obj.ParseName($file_name)
PS C:\> 3..5 | Foreach-Object { "{1} : {2}" -f $_, $folder_obj.GetDetailsOf($null, $_), $folder_obj.GetDetailsOf($file_obj, $_) }
更新日時 : 2025/09/10 0:00
作成日時 : 2025/10/10 12:01
アクセス日時 : 2025/10/10 12:06
PS C:\>

2-2.作成日時とアクセス日時を変更する

ファイルの更新日時を変更します。

今回は2か月前の時間(2025/08/10 00:00:00)を設定します。

Set-ItemProperty "C:\time-change.txt" `
 -Name CreationTime `
 -value "2025/08/10 00:00:00"

Set-ItemProperty "C:\time-change.txt" `
 -Name LastAccessTime `
 -value "2025/08/10 00:00:00"

特に出力などは出ずに完了します。

2-3.変更後の作成日時とアクセス日時を確認

再度 COM オブジェクトを使って、3..5(更新日時・作成日時・アクセス日時)を取得し、意図した日時になっていることを確認します。

PS C:\> $file_obj = $folder_obj.ParseName($file_name)
PS C:\> 3..5 | Foreach-Object { "{1} : {2}" -f $_, $folder_obj.GetDetailsOf($null, $_), $folder_obj.GetDetailsOf($file_obj, $_) }
更新日時 : 2025/09/10 0:00
作成日時 : 2025/08/10 0:00
アクセス日時 : 2025/08/10 0:00
PS C:\>

再度オブジェクトを読み込んで確認すると 2025/08/10 0:00 に更新されていることが確認できました。