【初心者向け】PowerShell「Get-Date」の使い方ガイド|現在日時の取得からフォーマット指定まで徹底解説!

その他

スクリプトの中で現在の日付や時刻を使いたいこと、よくありますよね。

たとえば
「ログに日時を入れたい」
「ファイル名にタイムスタンプを付けたい」
「日付を比較して古いデータを削除したい」
など、日時情報は自動化に欠かせない要素です。

そんなときに便利なのが、PowerShellの「Get-Date」コマンド。

この記事では、PowerShell初心者でもすぐに使えるように、Get-Dateの基本構文からフォーマット指定・過去未来の日付取得・応用的な使い方まで、わかりやすく解説します!

スポンサーリンク

Get-Dateとは?基本の使い方

Get-Dateは、現在の日時を取得するためのPowerShellコマンドレットです。

基本構文

Get-Date

実行例

2025年5月17日 14:30:12

→ 現在のシステム日時がそのまま表示されます。

プロパティへのアクセス

Get-Dateの結果は単なるテキストではなく、日付オブジェクトなので、さまざまな部分を個別に取得できます:

$date = Get-Date
$date.Year     # 年のみ取得(例:2025)
$date.Month    # 月のみ取得(例:5)
$date.Day      # 日のみ取得(例:17)
$date.Hour     # 時のみ取得(例:14)
$date.Minute   # 分のみ取得(例:30)
$date.Second   # 秒のみ取得(例:12)
$date.DayOfWeek # 曜日を取得(例:Saturday)

よく使うフォーマットのカスタマイズ方法

Get-Dateでは-Formatオプションを使うことで、出力スタイルを自由にカスタマイズできます。

例1:年-月-日 時:分:秒

Get-Date -Format "yyyy-MM-dd HH:mm:ss"

2025-05-17 14:30:12

例2:年月日だけ取得

Get-Date -Format "yyyyMMdd"

20250517

例3:ファイル名用の形式(コロンやスペースなし)

Get-Date -Format "yyyyMMdd_HHmmss"

20250517_143012

例4:日本語表記

Get-Date -Format "yyyy年MM月dd日(ddd) HH時mm分"

2025年05月17日(土) 14時30分

主なフォーマット指定子

指定子説明
yyyy4桁の年2025
yy2桁の年25
MM2桁の月05
M1~2桁の月5
dd2桁の日17
d1~2桁の日17
HH24時間表記の時間(2桁)14
H24時間表記の時間(1~2桁)14
hh12時間表記の時間(2桁)02
mm分(2桁)30
ss秒(2桁)12
ddd省略形の曜日
dddd完全な曜日名土曜日
ttAM/PMPM

応用編:過去・未来の日付を取得する

Get-Dateはそのままでは現在の日時を返しますが、メソッドを使って過去や未来の日時も簡単に計算できます。

例:7日前の日付

(Get-Date).AddDays(-7)

例:30分後の時刻

(Get-Date).AddMinutes(30)

例:1年前

(Get-Date).AddYears(-1)

AddDays / AddMonths / AddYears / AddHours などを使えば、簡単に日時をずらすことができます。

これらのメソッドを組み合わせることもできます:

(Get-Date).AddDays(-7).AddHours(3)  # 7日前の3時間後

応用編2:日付の比較や条件処理に使う

Get-Dateで取得した日時オブジェクトは、比較演算子を使って大小関係を評価できます。

例:ファイルが30日以上前に作成されたかチェック

$old = (Get-Date).AddDays(-30)
Get-ChildItem | Where-Object { $_.CreationTime -lt $old }

例:ログに現在日時を追加

"[$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')] バックアップ完了" | Out-File -FilePath "log.txt" -Append

例:日付の範囲内かどうかを確認

$startDate = Get-Date "2025/01/01"
$endDate = Get-Date "2025/12/31"
$targetDate = Get-Date

if (($targetDate -ge $startDate) -and ($targetDate -le $endDate)) {
    Write-Host "対象日は範囲内です"
} else {
    Write-Host "対象日は範囲外です"
}

よくあるトラブルと対処法

トラブル1:日本語表示で形式が思った通りにならない

  • 対処: -Formatオプションで明示的に指定する(例:”yyyy-MM-dd”)
  • 解説: システムの地域設定によって表示が変わることがあります

トラブル2:ファイル名にコロン「:」が含まれてエラーになる

  • 対処: フォーマットからコロンを除く(例:”HHmmss”にする)
  • 解説: Windowsではファイル名に使えない文字があります

トラブル3:日時の計算結果が予想と違う

  • 対処: タイムゾーンや夏時間の影響を確認する
  • 解説: -UFormatを使うと、より細かい制御が可能です

トラブル4:日付文字列がGet-Dateで解析できない

  • 対処: 日付のフォーマットを指定する(例:Get-Date "2025/05/17"
  • 解説: 地域設定によって日付の解釈が変わることがあります

Get-Dateが活躍する場面

  • スクリプトの実行ログに時刻を記録
  • ファイル名にタイムスタンプを自動付与
  • バッチ処理で指定期間以前のファイルを削除
  • 日付の比較による条件分岐
  • タスクスケジューラと組み合わせた定期実行処理
  • スクリプトの実行時間測定(開始時刻と終了時刻の差)

実践例:タイムスタンプ付きのバックアップスクリプト

$timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
$source = "C:\MyDocuments"
$destination = "D:\Backup\MyDocuments_$timestamp"

Copy-Item -Path $source -Destination $destination -Recurse
Write-Host "バックアップが完了しました: $destination"

実践例:30日以上前のログファイルを削除

$cutoff = (Get-Date).AddDays(-30)
$logFiles = Get-ChildItem -Path "C:\Logs" -Filter "*.log"

foreach ($file in $logFiles) {
    if ($file.LastWriteTime -lt $cutoff) {
        Remove-Item $file.FullName
        Write-Host "$($file.Name) を削除しました"
    }
}

まとめ

Get-Dateは単なる「現在の日時を取得するコマンド」ではなく、日付操作・比較・表示フォーマットの柔軟な制御が可能な、PowerShellの基本にして超重要なツールです。

本記事のポイント:

  • Get-Dateで現在の日時が取得できる
  • -Formatで自由に出力形式をカスタマイズ可能
  • AddDaysなどで過去・未来の日付も取得できる
  • 日付比較やログ記録、ファイル操作に欠かせない
  • 日時オブジェクトのプロパティで年・月・日などに個別アクセスも可能

PowerShellを使った業務自動化・ログ出力・ファイル管理の土台として、ぜひGet-Dateをマスターして活用してみてください!

コメント

タイトルとURLをコピーしました