PowerShell ile Windows 11 Hizmetlerini Listeleme ve CSV’ye Aktarma

Windows sistemlerinde hizmetler (servisler), arka planda çalışan ve işletim sisteminin ya da yüklü uygulamaların düzgün çalışmasını sağlayan kritik bileşenlerdir. Zaman zaman sistem yöneticileri veya ileri düzey kullanıcılar, hangi hizmetlerin çalıştığını, hangilerinin durdurulduğunu veya başlangıç türlerinin ne olduğunu belgelemek ister. Bu yazıda, Windows 11 üzerinde PowerShell kullanarak tüm hizmetleri nasıl listeleyeceğinizi, bunları CSV dosyasına nasıl aktaracağınızı ve başlangıç türüne göre nasıl filtreleyeceğinizi adım adım anlatacağız.

Bu işlemler tamamen okuma amaçlıdır; hiçbir hizmetin durumu, başlangıç türü veya yapılandırması değiştirilmez. Güvenle uygulayabilirsiniz.

Ön Hazırlık: Kodlama ve Çıktı Klasörü

Türkçe karakterlerin CSV dosyasında doğru görünmesi için kodlamayı ve ayracı baştan ayarlıyoruz. Ayrıca dosyaları masaüstünde düzenli bir klasöre yazacağız.

PowerShell
# Kodlama ve ayraç
$enc   = if ($PSVersionTable.PSVersion.Major -ge 6) { 'utf8BOM' } else { 'UTF8' }
$delim = ';'   # Türkçe Excel için noktalı virgül

# Çıktı klasörü
$out = "$env:USERPROFILE\Desktop\hizmet-listesi"
New-Item -ItemType Directory -Path $out -Force | Out-Null

Neden bu ayarlar?

  • Export-Csv varsayılan olarak ASCII yazar; Türkçe karakterler (ş, ğ, ı, İ, ö, ü, ç) bozulur. -Encoding parametresi bunu çözer.
  • PowerShell 5.1’de UTF8, PowerShell 7+’da utf8BOM kullanılır; Excel’in BOM’lu UTF-8’i tanıması gerekir.
  • Türkçe Excel genellikle ; ayracını bekler; , kullanılırsa tüm satır tek sütuna düşer.

Tüm Hizmetleri CSV’ye Aktarma

Aşağıdaki komut, sistemdeki tüm hizmetleri (çalışan ve durdurulmuş) duruma ve görünen ada göre sıralar, ardından Status, Name, DisplayName ve StartType sütunlarıyla CSV dosyasına yazar:

PowerShell
Get-Service |
    Sort-Object Status, DisplayName |
    Select-Object Status, Name, DisplayName, StartType |
    Export-Csv "$out\tum-hizmetler.csv" -NoTypeInformation -Encoding $enc -Delimiter $delim

Not: Export-Csv cmdlet’i varsayılan olarak konsola hiçbir şey yazmaz. Komutun ekrana çıktı vermemesi normaldir; dosya sessizce oluşturulur.

Başlangıç Türüne Göre Filtrelenmiş Dosyalar

Get-Service çıktısındaki StartType özelliği şu değerleri alır:

  • Automatic (Otomatik)
  • Manual (Manuel)
  • Disabled (Devre Dışı)
  • Boot (Önyükleme)
  • System (Sistem)

Aşağıdaki döngü, her başlangıç türü için ayrı bir CSV dosyası oluşturur:

PowerShell
$map = @{
    'Automatic' = 'otomatik'
    'Manual'    = 'manuel'
    'Disabled'  = 'devredisi'
    'Boot'      = 'boot'
    'System'    = 'system'
}

foreach ($type in $map.Keys) {
    Get-Service |
        Where-Object { $_.StartType -eq $type } |
        Select-Object Status, Name, DisplayName, StartType |
        Export-Csv "$out\hizmetler-$($map[$type]).csv" -NoTypeInformation -Encoding $enc -Delimiter $delim
}

Bu komut sonunda masaüstündeki hizmet-listesi klasöründe şu dosyalar oluşur:

Dosyaİçerik
tum-hizmetler.csvTüm hizmetler
hizmetler-otomatik.csvOtomatik başlangıçlı hizmetler
hizmetler-manuel.csvManuel başlangıçlı hizmetler
hizmetler-devredisi.csvDevre dışı hizmetler
hizmetler-boot.csvBoot başlangıçlı hizmetler
hizmetler-system.csvSystem başlangıçlı hizmetler

Sadece Çalışan Hizmetleri Listeleme

Yalnızca o an çalışan hizmetleri görmek isterseniz Where-Object bloğuna durum filtresi ekleyin. Örneğin, otomatik başlangıçlı ve çalışan hizmetler:

PowerShell
Get-Service |
    Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -eq 'Running' } |
    Select-Object Status, Name, DisplayName, StartType |
    Export-Csv "$out\otomatik-calisan-hizmetler.csv" -NoTypeInformation -Encoding $enc -Delimiter $delim

Sonuçları Doğrulama

Oluşan dosyaları listelemek için:

PowerShell
Get-ChildItem $out | Select-Object Name, Length, LastWriteTime | Format-Table -AutoSize

Bir CSV dosyasının içeriğini kontrol etmek için (aynı kodlama ve ayraçla içe aktarın):

PowerShell
Import-Csv "$out\tum-hizmetler.csv" -Encoding $enc -Delimiter ';' |
    Select-Object -First 5 |
    Format-Table -AutoSize

Farklı bilgisayarlarda hizmet sayısının değişebileceğini unutmayın; bu, Windows sürümüne, yüklü yazılımlara ve sürücülere bağlıdır.

Excel’de Açarken Dikkat Edilecekler

CSV dosyasına çift tıklamak bazı sürümlerde Türkçe karakterleri bozabilir. Bunun yerine:

Excel → Veri → Metinden/CSV’den → Dosyayı seç → Kodlama: UTF-8 → Ayraç: Noktalı virgül

Bu adımlarla Türkçe karakterler ve sütunlar kusursuz görünür.

Geçici Dosyaları Temizleme

Oluşturduğunuz dosyaları silmek isterseniz yalnızca tam yolu kullanın. Joker karakter kullanmaktan kaçının:

PowerShell
Remove-Item "$out\tum-hizmetler.csv"
Test-Path "$out\tum-hizmetler.csv"   # False dönerse dosya silinmiştir

Klasörün tamamını silmek için:

PowerShell
Remove-Item $out -Recurse -Force

Sonuç

Bu yazıda, Windows 11’de PowerShell kullanarak:

  • Tüm hizmetleri (çalışan ve durmuş) CSV’ye aktarmayı,
  • Başlangıç türüne göre (Automatic, Manual, Disabled, Boot, System) ayrı dosyalar oluşturmayı,
  • Türkçe karakter sorununu -Encoding ve -Delimiter parametreleriyle çözmeyi,
  • Ve sonuçları doğrulamayı öğrendiniz.

Tüm komutlar salt okunur niteliktedir ve sistem yapılandırmanızı değiştirmez. İhtiyaçlarınıza göre Select-Object kısmına farklı özellikler ekleyerek (örneğin MachineName) listeleri daha da zenginleştirebilirsiniz.

Benzer Gönderiler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir