Site Overlay

Terminal Server Kullanıcı Profil Dosyaları Nasıl Temizlenir?

Terminal Server Kullanıcı Profil Dosyaları Nasıl Temizlenir?

PowerShell ile kullanılmayan kullanıcı profillerini filtreleyin ve belirlediğiniz istisnalar dışındaki uygun profilleri tek bir script ile temizleyin.

Terminal Server Kullanıcı Profilleri Neden Temizlenmelidir?

Windows Server ve Terminal Server (Remote Desktop Services – RDS) ortamlarında zaman içinde kullanılmayan kullanıcı profilleri birikebilir. Bu profiller sunucudaki disk alanını gereksiz yere tüketebilir. Özellikle çok sayıda kullanıcının bağlandığı uzak masaüstü sunucularında eski profillerin düzenli olarak kontrol edilmesi, depolama alanının daha verimli kullanılmasına yardımcı olur.

Bu rehberde, PowerShell ve Win32_UserProfile sınıfını kullanarak Terminal Server kullanıcı profil dosyalarının nasıl temizleneceğini adım adım açıklayacağız.

⚠️ Önemli güvenlik uyarısı

Kullanıcı profillerinin silinmesi, profil klasöründeki belgelerin, masaüstü dosyalarının ve diğer kullanıcı verilerinin kaybolmasına neden olabilir. İşleme başlamadan önce gerekli dosyaları yedekleyin ve silinecek profilleri kontrol edin.

1. Silinmeyecek Kullanıcı Profillerini Belirleyin

İlk olarak, temizleme işleminden korunmasını istediğiniz kullanıcı profil klasörlerini belirleyin. Aşağıdaki örnekte beş profil adı hariç tutulmaktadır.

$Exclude = @(
'administrator',
'arifa',
'Public',
'Default',
'Default User'
)
📌 Bilmeniz gerekenler
  • administrator ve arifa örnek kullanıcı profil klasörleridir.
  • Public, Default ve Default User da hariç tutma listesine eklenmiştir.
  • Liste, kullanıcı hesabının adını değil, profil klasörünün son bileşenini kontrol eder.
  • Sunucunuzda farklı profil adları varsa listeyi buna göre güncelleyin.

2. Hazır PowerShell Scripti ile Kullanıcı Profillerini Temizleme

Aşağıdaki kod, hariç tutulan profil klasörleri dışındaki uygun profilleri filtreleyerek silme işlemini gerçekleştirir. Script, yalnızca o anda yüklenmemiş, özel olarak işaretlenmemiş ve C:\Users\ altında bulunan profilleri hedefler.

⚠️ Dikkat: Bu kod doğrudan silme işlemi yapar

Komut silme öncesinde onay istemez. Çalıştırıldığında filtrelere uyan profiller kaldırılır. Önce listeleme yapmanız ve sonuçları doğrulamanız önerilir.

● TerminalServerProfileCleanup.ps1 PowerShell
$Exclude = @(
'administrator',
'arifa',
'Public',
'Default',
'Default User'
)

Get-CimInstance Win32_UserProfile | Where-Object { $.Loaded -eq $false -and $.Special -eq $false -and $.LocalPath -like 'C:\Users*' -and (Split-Path $.LocalPath -Leaf) -notin $Exclude } | Remove-CimInstance

Script nasıl çalışır?

  • $Exclude: Silinmemesi gereken profil klasörlerini tanımlar.
  • Get-CimInstance Win32_UserProfile: Windows üzerinde kayıtlı kullanıcı profillerini getirir.
  • Where-Object: Profilleri belirtilen koşullara göre filtreler.
  • Loaded -eq $false: O anda yüklenmemiş profilleri seçer.
  • Special -eq $false: Windows tarafından özel olarak işaretlenmiş profilleri hariç tutar.
  • LocalPath -like 'C:\Users\*': Yalnızca belirtilen dizinin altındaki profil yollarını hedefler.
  • -notin $Exclude: Hariç tutma listesinde bulunan klasör adlarını korur.
  • Remove-CimInstance: Filtrelerden geçen profil nesnelerini kaldırır.

3. Temizleme İşlemini Başlatan Komut Hangisi?

PowerShell scriptindeki gerçek silme işlemini başlatan komut Remove-CimInstance ifadesidir. Önceki komutlar profilleri getirir ve filtreler; son komut ise filtrelerden geçen profil nesnelerini kaldırır.

🔴 GERÇEK SİLME KOMUTU

Remove-CimInstance

Tam scriptte bu komut, filtrelenen profillere boru hattı üzerinden uygulanır. Tek başına çalıştırıldığında aynı filtreleme işlemini yapmaz; önceki aşamalardan gelen profil nesneleriyle birlikte kullanılır.

4. PowerShell Scripti Nasıl Çalıştırılır?

1 PowerShell’i yönetici olarak açın.

Başlat menüsünden PowerShell’i bulun ve yönetici yetkisiyle çalıştırın.

2 Hariç tutma listesini kontrol edin.

Silinmesini istemediğiniz profil klasörlerinin listede bulunduğundan emin olun.

3 Kodun tamamını yapıştırın.

Hariç tutma listesini ve temizleme komutunu birlikte çalıştırın.

4 Enter tuşuna basın.

PowerShell, filtrelere uyan profil nesnelerini kaldırmaya çalışır. Hata oluşursa ekrandaki hata mesajını inceleyin.

5. Daha Güvenli Kullanım: Önce Profilleri Listeleyin

Üretim sunucusunda doğrudan silme yapmak yerine, önce hangi profillerin hedeflendiğini görmek daha güvenlidir. Aşağıdaki kod yalnızca listeleme yapar; herhangi bir profil silmez.

$Exclude = @(
'administrator',
'arifa',
'Public',
'Default',
'Default User'
)

Get-CimInstance Win32_UserProfile |
Where-Object {
$_.Loaded -eq $false -and
$_.Special -eq $false -and
$_.LocalPath -like 'C:\Users\*' -and
(Split-Path $_.LocalPath -Leaf) -notin $Exclude
} |
Select-Object LocalPath, SID, Loaded, Special
✓ Önerilen uygulama sırası

Önce listeleme kodunu çalıştırın, sonuçları inceleyin ve ardından tam silme scriptini uygulayın. Listeleme komutuyla silme komutunun farklı amaçlara hizmet ettiğini unutmayın.

Kullanıcı Profil Temizliğinde Dikkat Edilmesi Gerekenler

  • Yedek alın: Profil klasörlerinde önemli kullanıcı dosyaları bulunmadığından emin olun.
  • Aktif oturumları kontrol edin: Loaded değerinin False olması profilin artık kullanılmadığını garanti etmez.
  • Hariç tutma listesini doğrulayın: Karşılaştırma profil klasörünün adına göre yapılır.
  • Özel profilleri koruyun: Special filtresi özel olarak işaretlenmiş profillerin seçilmesini önler.
  • Önce test edin: Scripti üretim ortamında uygulamadan önce test sunucusunda doğrulayın.
  • Profil yönetimi çözümünüzü kontrol edin: FSLogix, dolaşan profiller veya ağ üzerinde tutulan profiller için farklı yönetim kuralları geçerli olabilir.

Sık Sorulan Sorular

Terminal Server kullanıcı profilleri PowerShell ile silinebilir mi?

Evet. Get-CimInstance Win32_UserProfile ile profiller getirilebilir, filtrelenebilir ve uygun nesneler Remove-CimInstance ile kaldırılabilir.

Loaded değeri False olan tüm profiller silinebilir mi?

Hayır. Bu değer yalnızca profilin o anda yüklenmediğini gösterir. Profilin gereksiz veya güvenle silinebilir olduğunu tek başına kanıtlamaz.

Administrator profili nasıl korunur?

Örnekte administrator profil klasörü hariç tutma listesine eklenmiştir. Farklı klasör adları kullanan profiller varsa listeyi güncelleyin.

Bu script kullanıcı hesaplarını da siler mi?

Hayır. Script Windows kullanıcı hesaplarını silmek için tasarlanmamıştır. Filtrelere uyan yerel kullanıcı profillerini kaldırır.

Profil silme işlemi kullanıcı dosyalarını etkiler mi?

Evet. Profilin yerel verileri silinebilir. Bu nedenle önemli dosyaları önceden yedeklemek gerekir.

Sonuç

PowerShell ile Terminal Server kullanıcı profil dosyalarını temizlemek, Windows Server üzerindeki disk alanını yönetmeye yardımcı olabilir. Hariç tutma listesi, yüklenme durumu ve özel profil kontrolü sayesinde uygun profiller filtrelenebilir.

En güvenli yaklaşım, önce profilleri listelemek, sonuçları kontrol etmek, gerekli verileri yedeklemek ve yalnızca doğrulanmış profiller için silme scriptini çalıştırmaktır.

✓ Kısa Özet

Hariç tutulacak profilleri belirleyin, silme adaylarını kontrol edin ve yalnızca doğruladığınız profiller için temizleme scriptini çalıştırın.

Author: Arif Akyüz

Arif Akyüz - Siber Güvenlik Uzmanı ve Dijital Dönüşüm Lideri 15 yılı aşkın süredir bilişim sektöründe, özellikle siber güvenlik ve dijital dönüşüm alanlarında hizmet veren bir uzmanım. Hem stratejik hem de teknik düzeyde çözümler sunarak organizasyonların güvenlik altyapılarını güçlendiriyor ve dijitalleşme süreçlerini yönetiyorum.