PowerShell でのファイルの最終書き込み時刻のクエリ

Marion Paul Kenneth Mendoza 2023年6月21日
  1. PowerShell でのファイル プロパティのクエリ
  2. PowerShell で値を DateTime 形式に変換する
  3. PowerShell で 2つの日付の違いを見つける
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 Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

関連記事 - PowerShell File