PowerShell でのファイルの最終書き込み時刻のクエリ
ファイルを管理する際に最もチェックすべきプロパティの 1つは、ファイルが最後に変更された日時です。 これは、ファイル エクスプローラーを使用して簡単に確認できます。
ただし、PowerShell を使用してプログラムでファイルのプロパティを確認したい場合があります。
この記事では、ファイルのプロパティを取得する方法、最終書き込み時刻を照会する方法、追加のコマンドを実行して現在の日付とは異なる日付を取得する方法について説明します。
PowerShell でのファイル プロパティのクエリ
Windows PowerShell では、Get-ItemProperty
コマンドを使用してファイル プロパティを簡単にクエリできます。 例として 1つのファイルを使用してみましょう。
コード例:
$filepath = "C:\Temp\Login.log"
Get-ItemProperty -Path $filepath
上記の例では、Login.log
の基本的なプロパティを照会しました。 上記のスニペットは、ファイル エクスプローラーを使用してファイル プロパティを確認する方法を模倣しています。
出力:
Directory: C:\Temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 6/7/2022 4:33 AM 4944 Login.log
Mode
プロパティまたはファイルのアクセス許可、Length
またはファイル サイズ、および LastWriteTime
またはファイルが最後に変更された日時も確認できました。
この記事では、ファイルの最終書き込み時間にもっと注目したかったので、以下の更新されたコード スニペットを実行して、このプロパティを分離してみましょう。
コード例:
$filepath = "C:\Temp\Login.log"
(Get-ItemProperty -Path $filepath -Name LastWriteTime).LastWriteTime
出力:
Tuesday, June 7, 2022 4:33:02 AM
ご覧のとおり、ファイルの最終変更時刻が正しく分離されました。 ただし、現在の日時とファイルの前回の書き込み時間との差を取得したい場合は、データ型の違いによりエラーが発生します。
PowerShell で値を DateTime
形式に変換する
PowerShell には、システムの日付と時刻の形式を表す DateTime
と呼ばれる特定のデータ型があります。 前の出力は String
形式なので、以下のコードを実行して DateTime
形式に変換しましょう。
コード例:
$filepath = "C:\Temp\Login.log"
$lastWrite = [DateTime](Get-ItemProperty -Path $filepath -Name LastWriteTime).LastWriteTime
DateTime
値を結果に割り当てたことに注意してください。 後でスクリプトに利便性を追加するためにこれを行いました。
PowerShell で 2つの日付の違いを見つける
出力が DateTime
形式になったので、単純な数式を実行することで、現在と最後の書き込み時刻の差を簡単に見つけることができます。
コード例:
$currDate = Get-Date
$currDate - $lastWrite
出力:
Days : 0
Hours : 17
Minutes : 24
Seconds : 57
Milliseconds : 757
Ticks : 626977577652
TotalDays : 0.725668492652778
TotalHours : 17.4160438236667
TotalMinutes : 1044.96262942
TotalSeconds : 62697.7577652
TotalMilliseconds : 62697757.7652
Get-Date
コマンドは、コマンドの実行中に現在の日付と時刻を照会します。 コマンドは DateTime
データ型で保存されるため、準備された最終書き込み時刻の値に似ています。
DateTime
データ型の 2つの変数を使用すると、プラス (+
) やマイナス (-
) などの数学演算子を使用して合計時間と差を見つけることができます。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn