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.
# 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-NullNeden bu ayarlar?
Export-Csvvarsayılan olarak ASCII yazar; Türkçe karakterler (ş, ğ, ı, İ, ö, ü, ç) bozulur.-Encodingparametresi bunu çözer.- PowerShell 5.1’de
UTF8, PowerShell 7+’dautf8BOMkullanı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:
Get-Service |
Sort-Object Status, DisplayName |
Select-Object Status, Name, DisplayName, StartType |
Export-Csv "$out\tum-hizmetler.csv" -NoTypeInformation -Encoding $enc -Delimiter $delimNot:
Export-Csvcmdlet’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:
$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.csv | Tüm hizmetler |
hizmetler-otomatik.csv | Otomatik başlangıçlı hizmetler |
hizmetler-manuel.csv | Manuel başlangıçlı hizmetler |
hizmetler-devredisi.csv | Devre dışı hizmetler |
hizmetler-boot.csv | Boot başlangıçlı hizmetler |
hizmetler-system.csv | System 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:
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 $delimSonuçları Doğrulama
Oluşan dosyaları listelemek için:
Get-ChildItem $out | Select-Object Name, Length, LastWriteTime | Format-Table -AutoSizeBir CSV dosyasının içeriğini kontrol etmek için (aynı kodlama ve ayraçla içe aktarın):
Import-Csv "$out\tum-hizmetler.csv" -Encoding $enc -Delimiter ';' |
Select-Object -First 5 |
Format-Table -AutoSizeFarklı 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:
Remove-Item "$out\tum-hizmetler.csv"
Test-Path "$out\tum-hizmetler.csv" # False dönerse dosya silinmiştirKlasörün tamamını silmek için:
Remove-Item $out -Recurse -ForceSonuç
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
-Encodingve-Delimiterparametreleriyle çö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.
Eğer Python geliştiricisiyseniz bu yazı da ilginizi çekebilir: Python psutil Kütüphanesi İle Windows Hizmetler’e Erişim ve Yönetme
