スクリプトの中で現在の日付や時刻を使いたいこと、よくありますよね。
たとえば
「ログに日時を入れたい」
「ファイル名にタイムスタンプを付けたい」
「日付を比較して古いデータを削除したい」
など、日時情報は自動化に欠かせない要素です。
そんなときに便利なのが、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分
主なフォーマット指定子
指定子 | 説明 | 例 |
---|---|---|
yyyy | 4桁の年 | 2025 |
yy | 2桁の年 | 25 |
MM | 2桁の月 | 05 |
M | 1~2桁の月 | 5 |
dd | 2桁の日 | 17 |
d | 1~2桁の日 | 17 |
HH | 24時間表記の時間(2桁) | 14 |
H | 24時間表記の時間(1~2桁) | 14 |
hh | 12時間表記の時間(2桁) | 02 |
mm | 分(2桁) | 30 |
ss | 秒(2桁) | 12 |
ddd | 省略形の曜日 | 土 |
dddd | 完全な曜日名 | 土曜日 |
tt | AM/PM | PM |
応用編:過去・未来の日付を取得する

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
をマスターして活用してみてください!
コメント