Aracılığıyla paylaş


Komut İsteminden Tüm Uzak Masaüstü Oturumu Kullanıcılarını Kapatma

Bazı koşullar altında, yönetici uzak masaüstü sunucusunda oturum açmış olan tüm kullanıcıların oturum kapatmasını zorlamak isteyebilir. Bunu bir toplu iş dosyası veya PowerShell betiği kullanarak yapabilirsiniz.

Uyarı

Aşağıdaki yordamın gerçekleştirilmesi, Uzak Masaüstü sunucusunda oturum açmış olan tüm kullanıcıların oturumunu kapatır. Bu, kaydedilmemiş verilerin kaybolmasına neden olabilir. Bu nedenle, aşırı dikkatli olunması tavsiye edilir.

Özgün KB numarası: 259436

PowerShell'i kullanma

Tüm kullanıcı oturumlarını kapatmak için Bağlantı Aracısı'nda aşağıdaki PowerShell cmdlet'lerini çalıştırın:

$sessions = Get-RDUserSession

foreach($session in $sessions)
{
    Invoke-RDUserLogoff -HostServer $session.HostServer -UnifiedSessionID $session.UnifiedSessionId -Force
}

Yalnızca bağlantısı kesilmiş kullanıcı oturumlarını kapatmak için Bağlantı Aracısı'nda aşağıdaki PowerShell cmdlet'lerini çalıştırın:

$sessions = Get-RDUserSession |  ? {$_.SessionState -eq "STATE_DISCONNECTED"}

foreach($session in $sessions)
{
    Invoke-RDUserLogoff -HostServer $session.HostServer -UnifiedSessionID $session.UnifiedSessionId -Force
}

Toplu iş dosyasını kullanma

Aşağıdaki bilgileri bir toplu iş (.bat) dosyasına yerleştirin:

query session >session.txt  
for /f "skip=1 tokens=3," %%i in (session.txt) DO logoff %%i  
del session.txt  

Bu toplu iş dosyası, Yöneticinin Uzak Masaüstü sunucu konsolunda oturum açmamış tüm kullanıcıların oturumunu kapatmaya zorlamak istediği herhangi bir zamanda çalıştırılabilir.

Sorgu, Uzak Masaüstü sunucu ortamında bulunan çok amaçlı bir komutdur. Bu durumda Sorgu Oturumu, Uzak Masaüstü sunucusunda çalıştırılan tüm oturumların listesini oluşturur ve Oturum Kimliği numaralarıyla birlikte tamamlar. Toplu iş dosyasının içinde bu çıkış bir metin dosyasına yönlendirilir. FOR deyimi daha sonra metin dosyasının her satırını ayrıştırarak ilk satırı atlar ve üçüncü sütunda bulunan Oturum Kimliği numarasını arar. Daha sonra bu değişkeni Oturum Kapatma'ya yerleştirir ve oturumun kapatılmasına neden olur.

Bu toplu iş dosyasını çalıştırdığınızda hata iletisi almak sık karşılaşılan bir durum değildir. Bir kullanıcı Uzak Masaüstü sunucu konsolunda oturum açtıysa aşağıdaki hata iletisi oluşturulur:

Could not logoff session ID 0 from session Console, Error code 5
Error [5]: Access is denied.

Bu, komutun bir sınırlaması nedeniyledir Logoff . Konsol oturumunun oturumunu kapatmaya zorlayamaz. Bu sorunun geçici bir çözümü, toplu iş dosyasını okuyacak şekilde değiştirmek olabilir:

query session >session.txt  
for /f "skip=2 tokens=3," %%i in (session.txt) DO logoff %%i  
del session.txt  

Session.txt dosyasının ilk iki satırı atlanır ve hatadan kaçınılır.