12.06.2025

Powershell betiklerinde günlük tutma

Düzenli olarak çalışan bir betik ile ilgili günlük tutmak faydalı oluyor. Günlüğün ilk başında yyyy-aa-gg ss:dd:nn biçiminde bir tarih alanı olmalı, sonrasında da günlük kaydına sebep olan olayla ilgili bilgiler yer almalı. İlk bulduğum yöntem şuydu:

$suan = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$log = "D:\log.txt"
... 
Add-Content -Path $log -Value "$suan beklenmeyen hata"

Sonra her seferinde tarih değişkeni ile uğraşmamak için fonksiyon oluşturmak istedim.

function gunluk {
    param (
        [string]$mesaj
    )
    $suan = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    $log = D:\log.txt
    Add-Content -Path $log -Value "$suan - $mesaj"
}
...
gunluk "beklenen hata"

Bu gayet pratik bir yöntem oldu, benim için. Sonrasında yürütme işlecini (&) keşfettim.

$log = "D:\log.txt"
$suan=Get-Date -Format "yyyy-MM-dd HH:mm:ss"; 
$gunluk = {param($mesaj);Add-Content -Path $log -Value "$suan - $mesaj"}
...
& $gunluk "baska bir hata daha"

Fonksiyonu çağırmak mı daha etkilidir, yoksa bir değişkenin içeriğini çalıştırmak mı, bilemedim ama bu da güzel.

Duruma göre, $suan değişkeni de bloğun içine alınabilir.