Get-WinEvent ile güvenlik olay kayıtlarını incelerken bazen hiç kayıt dönmüyor. Bunun sebebi de varsayılan olarak 20 MB olarak ayarlanan güvenlik olay günlüğünün bir süre sonra eski olayları siliyor olması. Yerel bilgisayarda mevcut durumu kontrol etmek için
PS> Get-Evenlog -List
kullanabiliriz. Güvenlik olay günlüğü (security) için bunu yönetici yetkileriyle açılmış bir pencereden çalıştırmamız gerek. Uygulama ve sistem için buna gerek yok. Bu komutun ürettiği çıktıda Max(K) sütununa bakarak istediğimiz olay günlüğünün azami boyutunu öğrenebiliriz. Bunu Get-WinEvent ile de yapabiliriz. Örneğin uzak bir bilgisayarın uygulama, sistem ve güvenlik olay kayıtlarını (yetkilerimiz dahilinde) incelemek için
PS> Get-WinEvent -Computername uzakpc -Listlog Application, System, Security
Yerel bilgisayarda olay herhangi bir günlüğüne ayrılmış alanı değiştirmek için
PS> Limit-Eventlog -LogName Security -MaximumSize 128MB
kullanabiliriz. Yeni boyutun 64KB'ın katları olması gerektiği söylenmiş. Bunu sağlamak için en iyi yöntem MB birimlerini kullanarak 1MB'ın katlarını belirtmek olabilir.
Limit-Eventlog cmdlet'inin -Computer parametresi ile ya da Invoke-Command kullanarak bu işlemi uzak bilgisayarlarda da uygulayabiliriz.
Sadece yerel bilgisayarda çalışan Get-LogProperties cmdlet'ini uzak bilgisayarda kullanmak için Invoke-Command ile birlikte çalıştırabiliriz. Hatta alias'larla birlikte şöyle bir çıktı üretir:
PS> icm -cn uzakpc {Get-LogProperties Security}
PSComputerName : uzakpc
RunspaceId : <...>
Name : Security
Enabled : True
Type : Admin
Retention : False
AutoBackup : False
MaxLogSize : 524288000
2023-11-24 Ek: Bu harika yöntem, Application and Services Logs (Uygulama ve Hizmet Günlükleri) altındaki günlüklerin boyutlarını değiştiremiyor. Örneğin
PS> Get-WinEvent -LogName "Microsoft-Windows-TaskScheduler/Operational"
ile "Microsoft-Windows-TaskScheduler/Operational" günlüğünü bulmasına rağmen
PS> Limit-Eventlog "Microsoft-Windows-TaskScheduler/Operational" -MaximumSize 512MB
hata dönüyor. İki yöntem buldum. Birincisi Get-WinEvent kullanmak:
PS> $log1 = Get-WinEvent -ListLog "Microsoft-Windows-TaskScheduler/Operational"
PS> $log1.MaximumSizeInBytes = 128MB
PS> $log1.SaveChanges()
İkinci yöntem ise Kayıt defteri düzenleyicisini kullanmak. Regedit.exe ile açtıktan sonra HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\Microsoft-Windows-TaskScheduler/Operational yoluna giderek buradaki MaxSize byte cinsinden değerini değiştirebiliriz. 128MB için bu 0x8000000 veya 134217728 olabilir.