Der Terminalserver-Benutzer kann in der Produktionsumgebung nicht abgemeldet, getrennt oder zurückgesetzt werden

19

Ich suche nach Ideen zum Trennen, Abmelden oder Zurücksetzen einer Benutzersitzung auf einem 2008-Terminalserver (da der Benutzer nicht angemeldet werden kann, da er vollständig gesperrt ist). Dies ist eine Produktionsumgebung, daher kommt ein Neustart des Servers oder eine systemweite Aktion derzeit nicht in Frage. Gibt es PowerShell-Tricks, die uns dabei helfen?

Wir haben versucht, die Verbindung zu trennen, den Benutzer abzumelden und die Sitzung zurückzusetzen sowie auch die Sitzungsprozesse zu beenden, und zwar direkt vom selben Terminalserver (vom Task-Manager, Terminaldienste-Manager und vom Ressourcenmonitor), ohne Ergebnisse.

Hilfe!


UPDATE: Wir haben den Server letztendlich neu gestartet, da keine anderen Versuche, die wir uns vorstellen konnten, erfolgreich waren. Ich lasse diese Frage offen und hoffe, dass jemand mehr Informationen zu diesem einen Problem und den möglichen Korrekturen hat

l0c0b0x
quelle
2
Ich habe genau das gleiche Problem auf meinen Windows 2008 R2 SP1-Terminalservern. Sie hängen nur zufällig und Benutzer können sich nicht abmelden oder am Server anmelden. Ich kann mich lokal nicht als lokaler Administrator oder Domänenadministrator anmelden. Die einzige Möglichkeit, eine Verbindung zum Server herzustellen, ist die Verwendung von compmgmt.msc, aber selbst hier kann ich keine Probleme in den Ereignisprotokollen feststellen. Irgendwann erhalte ich die Meldung, dass der IMA-Dienst nicht reagiert und der Server aus der Farm entfernt wurde. Die einzige Möglichkeit, dies zu beheben, besteht darin, den Server Hard neu zu starten. Schalten Sie das Gerät aus und wieder ein. Ich war nicht in der Lage, die Ursache dafür auf irgendetwas
1
Potenziell nützliche Links für alle, die auf dieses Problem stoßen
JohnLBevan

Antworten:

7

Um dieses Problem zu lösen, musste ich alle Prozesse unter dem gesperrten Konto im Task-Manager beenden. Anschließend konnte ich mich einfach von diesem Konto (von einem Administratorkonto) abmelden.

Der Benutzer konnte sich dann wieder unter dem Konto anmelden.

Es war kein Neustart erforderlich und es musste keine Software von Drittanbietern heruntergeladen werden.

laoslady
quelle
-Danke, ich habe mich vor dem Neustart des Servers gerettet! Ich wollte wirklich nicht alle während des Arbeitstages rausschmeißen, weil ich nicht weiterkam.
MAW74656,
Ist es sicher, diese Prozesse abzubrechen? Mein Benutzer hat csrss.exe, dwm.exe, LoginUI.exe, und winlogon.exe. Ich dachte, dass das Töten winlogon.exeeinen BSOD auslösen würde…
binki
6

Ich möchte mitteilen, wie ich das Konto zurückgesetzt habe, ohne den Server neu starten zu müssen. Zunächst müssen Sie Administratorzugriff auf den Server haben. Ich verwende die folgende Anmeldeoption : mstsc / v: servername / console / admin, um auf den Server zuzugreifen. Gehen Sie dann in "Windows Taks Manager" zur Registerkarte Benutzer und klicken Sie mit der rechten Maustaste auf das Konto, das Sie "Abmelden" möchten, und wählen Sie "Abmelden". Dies sollte die von diesem Konto verwendete gesperrte Sitzung freigeben.

James
quelle
1
außer es ist nicht immer. Außerdem sagte das OP, dass sie dies bereits versucht haben.
BeowulfNode42
Bei diesem Problem führt die Schaltfläche Abmelden im Task-Manager → Benutzer keine Aktionen aus.
binki
5

Die einfache Antwort besteht darin, eine Eingabeaufforderung mit erhöhten Rechten auszuführen und "Taskmgr" einzugeben. Anschließend können Sie sich über die Registerkarte USERS von den Sitzungen abmelden. Es wird nicht funktionieren, ohne in der gehobenen Sitzung zu sein.

John N
quelle
Getestet und diese Lösung hat funktioniert.
Overmind
1
Nicht für mich. Kann den Taskmanager auch nicht als Administrator verwenden, um einen der Prozesse des Benutzers zu beenden.
BeowulfNode42
3

Sie können eine Cmd starten, eine Abfragesitzung durchführen , die ID der abzubrechenden Sitzung überprüfen und dann eine Rücksetzsitzung durchführen . Wenn Sie beispielsweise bei einer Abfragesitzung feststellen, dass der Sitzungsname rdp-tcp # 1 der Name ist, den Sie beenden möchten, können Sie die Rücksetzsitzung rdp-tcp # 1 ausführen und diesen beenden .

grem
quelle
Danke, aber das hat auch nicht geholfen.
l0c0b0x
Wenn ich reset session 9diesen Befehl ausführe , hängt er nur. Meine Sitzung weiterhin die vier Prozesse ohne aktiv erscheinen laufen müssen: crss.exe, dwm.exe, LogonUI.exe, und winlogon.exe. i.imgur.com/cFM62RA.png und query session 9Ausgänge No User exists for 9.
binki
3

Ich nehme an, das gleiche ist heute auf meinem Win2008R2-Terminalserver passiert. Folgende Symptome traten auf: 1. Er rief mich mit der Meldung an, dass die Verbindung nur für immer besteht. Er ist nur ein einfacher Benutzer, daher kann ich keine detaillierte Problembeschreibung erwarten. 2. Ich habe versucht, mich abzumelden / die Sitzung zurückzusetzen (was normalerweise in diesen Fällen hilft) - hat nicht funktioniert. Die Sitzung bleibt in der Liste mit dem Status "Nicht verbunden" hängen. 3. Versucht, alle Prozesse für diesen Benutzer zu beenden - hat nicht geholfen. Sitzung bleibt bestehen und weigert sich, getötet zu werden.

Lösung: Verbinden Sie sich als Benutzer (melden Sie sich mit Ihren Anmeldeinformationen an, wenn Sie sein Kennwort zurücksetzen oder eine Art Remote-Hilfe verwenden können, um zu sehen, was auf seinem Computer passiert) und sehen Sie, was im Anmeldefenster passiert. Beim Herstellen der Verbindung klickte ich auf die Schaltfläche "Details" des RDP-Clients - und hier war es eine Fehlermeldung, die besagte, dass Winlogon etwas falsch gemacht hat. Sie wartete darauf, dass der Benutzer auf die Schaltflächen "Wiederholen / Ignorieren / etc" klickte, und da dies die allmächtige Winlogon ist, die es verursachte all das seltsame Verhalten.

ps Ich konnte keine Möglichkeit finden, eine Sitzung wirklich zu erzwingen :(


quelle
Das hat es für mich behoben! Es wurde darauf gewartet, dass der Benutzer die Verbindung zu einem anderen Benutzer trennt oder auf Abbrechen drückt. Ich drücke auf Abbrechen und jetzt verschwindet der Benutzer, der in der Registerkarte Benutzer des Task-Managers steckt. Vielen Dank!
binki
So sah meine Situation aus, als das Problem auftrat: i.imgur.com/W6eO5wW.png i.imgur.com/EpPwyJc.png i.imgur.com/cFM62RA.png Außerdem verwende ich Windows Server 2016
binki
3

Wir hatten gerade ein ähnliches Problem mit unserem Windows Server 2008 R2-Remotedesktopserver. In der Benutzersitzung wurde beim Anzeigen von RDS Manager "Aktiv" angezeigt, es wurde jedoch nicht die zugehörige Sitzungs-ID # oder das verbundene Gerät angezeigt (beide waren leer).

Alle oben genannten Tricks konnten das Problem nicht beheben. Beim Herstellen einer Verbindung als der betreffende Benutzer wurde eine Fehlermeldung zurückgegeben, die besagte, dass der Terminalserver ausgelastet war, und dass Sie es später erneut versuchen oder sich an den Administrator wenden sollten.

Wir haben auch den Server neu gestartet.

AdmBorkBork
quelle
2

Ich hatte das gleiche Problem in Windows Server 2016. Der Benutzer konnte sich nicht anmelden.

Daher habe ich die folgenden Schritte ausgeführt, um die verwaiste Sitzung zu trennen:

  1. Auf der CLI qwinsta werden alle verfügbaren Sitzungen aufgelistet, inaktive und aktive. Es gibt eine getrennte Sitzung (im Screenshot als "getr." bezeichnet) ohne Benutzernamen, aber mit einer Sitzungs-ID.

zeige aktive Sessions und töte sie

  1. mit der Sitzungs-ID (7) von 1. Ich habe versucht, diese Sitzung mit einer der beiden Zurücksetzungssitzungen 7 abzubrechen (zur Info: rwinsta ist ein Alias ​​für die Zurücksetzungssitzung).

  2. Es hat für eine Sitzung funktioniert, aber beim nächsten Mal hatte es einfach keine Auswirkung. Deshalb habe ich den Task-Manager und die Registerkarte Benutzer geöffnet. Dort finden Sie eine erweiterbare Liste, die jedem Remotedesktopbenutzer zugewiesen ist - eine Liste enthielt keinen Benutzernamen und zeigte nur 4 ausgeführte Aufgaben.

  3. Ich habe das Offensichtliche ausprobiert: Den Benutzer abmelden. Ohne Wirkung.

versucht, den Benutzer abzumelden

  1. Also habe ich versucht, die 4 Aufgaben zu beenden, die diesem Benutzer zugewiesen wurden. Seien Sie vorsichtig, da einige Aufgaben, vor allem csrss.exe, bei einem Abbruch ebenfalls zu einem Neustart des Systems führen würden. Ich habe sie übersprungen und nur einige offensichtliche RDP-Aufgaben erledigt.

Nach Schritt / Versuch 4 wurde sogar die letzte abgestürzte Sitzung beendet und der Benutzer konnte sich erneut anmelden

  1. Wenn dies immer noch nicht funktioniert, versuchen Sie diese Lösung anhand einer anderen Frage : Wenn Sie eine Verbindung mit dem RDP-Client herstellen, klicken Sie auf die Schaltfläche "Details". Dort sollte ein Fehler angezeigt werden und Sie können sogar auf " Wiederholen" klicken oder " Ignorieren" klicken .
nr
quelle
Können Sie genauer sagen, welche Prozesse Sie getötet haben und welche nicht? Ich denke , dass ich überspringen sollte , winlogon.exeaber ich bin nicht sicher über andere wie LoginUI.exe, csrss.exe, und dwm.exe.
binki
Die Symptome für die zweite Sitzung waren ähnlich wie bei mir und serverfault.com/a/176080/164429 . Sie könnten wahrscheinlich "Connect" als Schritt hinzufügen, um eine vollständigere Lösung zu finden und möglicherweise sogar zu vermeiden, dass Prozesse abgebrochen werden müssen.
binki
@binki sollte es "csrss.exe" sein - wenn Sie diesen Prozess beenden, wird das System neu gestartet.
Nr.
1

Es kann sich lohnen, zu überprüfen, ob der Benutzer kein Popup-Feld für Anmeldeinformationen hinter dem Remotedesktopfenster mit der Tastenkombination Alt + hat.

Ein Mitarbeiter hatte das gleiche Problem; konnte sich nicht abmelden oder zurücksetzen, und alle seine Prozesse wurden manuell heruntergefahren. Als ich versuchte, auf die GUI für das System zuzugreifen, von dem aus er Remoting durchführte, fand ich ein Anmeldeinformationsfeld, das sich hinter der Remotesitzung verbarg.

Kutrayn
quelle
1

Ich hätte die gleiche Situation: ein Windows Server 2008 R2 mit Remotedesktopdiensten, eine RDP-Verbindung, die eingerichtet wurde, um Benutzer abzumelden, nachdem die Sitzung 3 Stunden lang inaktiv war oder getrennt wurde, und dennoch blieben einige Sitzungen gesperrt. Ich habe versucht, sie mit Remote Desktop Manager und qwinsta / quser abzumelden, ohne Erfolg.

So habe ich es gelöst:

  1. Ich habe die Sitzungs-ID mit gefunden qwinsta.
  2. Ich habe die PID winlogon.exefür die unterbrochene Sitzung mit ermittelt query process /ID:yourid.
  3. Ich habe den Prozess mit getötet taskkill /f /PID yourPID.

Weiter so. Ich möchte sonst eine Lösung finden, damit dies nicht passiert.

curropar
quelle
1

Was bei mir funktioniert hat war:

  • Melden Sie sich am Server an
  • Öffnen Sie den Task-Manager
  • Suchen Sie auf der Registerkarte Benutzer nach dem Benutzer
  • Klicken Sie mit der rechten Maustaste, verbinden Sie sich, geben Sie das Benutzerkennwort ein. Ich sah einen 'Bitte warten'-Bildschirm
  • drücke Alt-Tab, der mich vom Server abgemeldet und den Benutzer auch abgemeldet hat
PhDJ
quelle
1

Ich hatte dieses Problem mit gesperrten Remotedesktopanwendungsbenutzern. Ich habe dieses Powershell-Skript geschrieben, um eine geplante Aufgabe auszuführen und Benutzer abzumelden, die länger als 2 Minuten als nicht verbunden angezeigt wurden. Die einzige Änderung, die erforderlich ist, ist der SERVERNAME, den ich zum Ausschließen des Remotedesktopbrokerservers festgelegt habe. Sie können jedoch jeden beliebigen oder gar keinen Server ausschließen.

Mein Skript wurde übrigens für Windows Server 2012 R2 geschrieben ...

Das Skript macht das:

  • Ruft eine Liste aller Remotedesktopbenutzersitzungen ab.
  • Ignoriert alle Sitzungen, die nicht "STATE_DISCONNECTED" sagen.
  • Ignoriert den Broker-Server (oder einen anderen Server)
  • Ignoriert alle Sitzungen ohne einheitliche Sitzungs-ID
  • Ignoriert alle Sitzungen, bei denen die Verbindung nicht getrennt wurde
  • Bei Sitzungen mit einer Verbindungsunterbrechungszeit wird die aktuelle Zeit überprüft. Wenn der Zeitunterschied zwischen jetzt und der Verbindungsunterbrechungszeit mehr als X Minuten beträgt (in diesem Fall 2), wird der Anmeldevorgang abgebrochen.
  • Es wird auch versucht, einen Abmeldebefehl auszugeben (dies schlägt höchstwahrscheinlich fehl, nachdem der Winlogon-Prozess beendet wurde).

Für mich geht das! Ich hoffe es hilft jemand anderem! :)

CLS
$RD = Get-RDUserSession | select ServerName, UserName, SessionState, DisconnectTime, UnifiedSessionId, SessionId #Get details about the sessions
foreach ($item in $RD) {
    $UsessionID = $item.UnifiedSessionId -as [int] 
    $sessionID = $item.SessionId -as [int] 
    if ($item.SessionState -eq "STATE_DISCONNECTED" -and $item.ServerName -ne "SERVERNAME" -and $item.DisconnectTime -ne $null -and $item.UnifiedSessionId -ne $null){
        $TimeDiff = New-TimeSpan -start $item.DisconnectTime -end (Get-Date) #check time difference between disconnect time and now. If time is greater than 2 minutes....
        if ($TimeDiff.Minutes -gt 2) {
            #Kill winlogon session for the user
            Get-WmiObject -ComputerName $item.Servername -query "select * from win32_process where name='winlogon.exe'" | Where-Object {$_.SessionId -eq $SessionId} | %{$_.terminate()}
            #Log off user if session still exists (will fail if user kicked)
            Invoke-RDUserLogoff -HostServer $item.ServerName -UnifiedSessionID $UsessionID -Force -erroraction 'silentlycontinue'
            }
         }
      }

Oder wenn Sie eine Version bevorzugen, mit der Sie sehen können, was auf dem Bildschirm passiert:

 CLS
    $RD = Get-RDUserSession | select ServerName, UserName, SessionState, DisconnectTime, UnifiedSessionId, SessionId
    foreach ($item in $RD) {
        $UsessionID = $item.UnifiedSessionId -as [int]
        $sessionID = $item.SessionId -as [int]
        if ($item.SessionState -eq "STATE_DISCONNECTED" -and $item.ServerName -ne "SERVERNAME" -and $item.DisconnectTime -ne $null -and $item.UnifiedSessionId -ne $null){
            #On Screen Output
            write-host " Name : " $Item.UserName -ForegroundColor "yellow" -NoNewline
            write-host " Unified Session Id : " $UsessionID -ForegroundColor "darkcyan" -NoNewline
            write-host " User Session Id : " $sessionID -ForegroundColor "darkyellow" -NoNewline
            write-host " Session State : " $item.SessionState -ForegroundColor "magenta" -NoNewline
            write-host " Server : " $item.ServerName -ForegroundColor "cyan" -NoNewline
            write-host " Disconnect Time : " $item.DisconnectTime -ForegroundColor "gray" 
            #End On Screen Output
            $TimeDiff = New-TimeSpan -start $item.DisconnectTime -end (Get-Date)
            if ($TimeDiff.Minutes -lt 2) {
                write-host " Disconnected for less than 2 minutes" -ForegroundColor "Green"}
            else {
                write-host " Disconnected for more than 2 minutes" -ForegroundColor "Red" -BackgroundColor "darkyellow"
                write-host " Killing session : " $item.ServerName " ID : " $UsessionID $item.UserName -ForegroundColor "Red"
                #Kill Process "Winlogon.exe" for the user (this should kill the session)
                Get-WmiObject -ComputerName $item.Servername -query "select * from win32_process where name='winlogon.exe'" | Where-Object {$_.SessionId -eq $SessionId} | %{$_.terminate()}
                #Logout User (if session still exists)
                Invoke-RDUserLogoff -HostServer $item.ServerName -UnifiedSessionID $UsessionID -Force -erroraction 'silentlycontinue'
                Write-host " Done! " -ForegroundColor "Green" -BackgroundColor "blue"
                }
             }
          }
Nullldata
quelle
1

Erstellen Sie eine Datei im Editor und nennen Sie sie findsession.cmd. Fügen Sie den Befehl Query Session / server: Servername ein | ein finde / i "% 1" und speichere in einem Verzeichnis. Erstellen Sie eine weitere Datei mit dem Namen resetsession.cmd und geben Sie den Befehl Sitzung zurücksetzen% 1 / Server:% 2 ein und speichern Sie sie.

Wechseln Sie an einer Eingabeaufforderung in das Verzeichnis, in dem Sie diese Dateien gespeichert haben, und geben Sie den Benutzernamen findesession ein (Login des Benutzers, den Sie suchen). Drücken Sie die Eingabetaste und Sie sollten die Anmelde- und Sitzungs-ID sehen. Geben Sie resetsession.cmd ID Servername ein, und die Sitzung wird zurückgesetzt. Ich benutze dies täglich und es ist super schnell, um Benutzer zu finden und ihre Sitzungen zurückzusetzen.

Sysadmin
quelle
Verwenden Sie die Textformatierungsoptionen, um Befehle hervorzuheben und die Lesbarkeit zu verbessern. Es ist eine gute Antwort, aber bitte bearbeiten Sie sie.
Marco
Es hat keinen Sinn,
Stapeldateien
1
  1. Suchen Sie die Sitzungs-ID mit qwinsta.
  2. taskkill /FI "SESSION eq 1" /FBeenden Sie alle Prozesse in der Sitzung , vorausgesetzt, die von qwinsta zurückgegebene Sitzungs-ID, die Sie beenden wollten, war 1.

Dies funktionierte auf Server 2012 Version 6.2 Build 9200, ich würde erwarten, dass es auf allen Windows-Versionen funktioniert.

Wille
quelle
1

Dieses Power-Shell-Skript hat bei mir funktioniert, es gibt sogar eine schöne Protokolldatei. Ich habe es von hier bekommen. : Ich hoffe, das hilft jemand anderem, da die anderen Antworten viele Voraussetzungen hatten und / oder bei mir nicht funktionierten.

    # .SYNOPSIS
    #   Checks for disconnected sessions and logs off the disconnected user sessions.

    #.DESCRIPTION
    #   Checks for disconnected sessions and logs off the disconnected user sessions.

    #.NOTES
    #   File Name: Logoff-DisconnectedSession.ps1
    #   Author   : Bart Kuppens
    #   Version  : 1.1

    #.EXAMPLE
    #   PS > .\Logoff-DisconnectedSession.ps1


    function Ensure-LogFilePath([string]$LogFilePath)
    {
     if (!(Test-Path -Path $LogFilePath)) {New-Item $LogFilePath -ItemType directory >> $null}
    }

    function Write-Log([string]$message)
    {
       Out-File -InputObject $message -FilePath $LogFile -Append
    }

    function Get-Sessions
    {
       $queryResults = query session
       $starters = New-Object psobject -Property @{"SessionName" = 0; "UserName" = 0; "ID" = 0; "State" = 0; "Type" = 0; "Device" = 0;}
       foreach ($result in $queryResults)
       {
          try
          {
             if($result.trim().substring(0, $result.trim().indexof(" ")) -eq "SESSIONNAME")
             {
                $starters.UserName = $result.indexof("USERNAME");
                $starters.ID = $result.indexof("ID");
                $starters.State = $result.indexof("STATE");
                $starters.Type = $result.indexof("TYPE");
                $starters.Device = $result.indexof("DEVICE");
                continue;
             }

             New-Object psobject -Property @{
                "SessionName" = $result.trim().substring(0, $result.trim().indexof(" ")).trim(">");
                "Username" = $result.Substring($starters.Username, $result.IndexOf(" ", $starters.Username) - $starters.Username);
                "ID" = $result.Substring($result.IndexOf(" ", $starters.Username), $starters.ID - $result.IndexOf(" ", $starters.Username) + 2).trim();
                "State" = $result.Substring($starters.State, $result.IndexOf(" ", $starters.State)-$starters.State).trim();
                "Type" = $result.Substring($starters.Type, $starters.Device - $starters.Type).trim();
                "Device" = $result.Substring($starters.Device).trim()
             }
          } 
          catch 
          {
             $e = $_;
             Write-Log "ERROR: " + $e.PSMessageDetails
          }
       }
    }

    Ensure-LogFilePath($ENV:LOCALAPPDATA + "\DisconnectedSessions")
    $LogFile = $ENV:LOCALAPPDATA + "\DisconnectedSessions\" + "sessions_" + $([DateTime]::Now.ToString('yyyyMMdd')) + ".log"

    [string]$IncludeStates = '^(Disc)$'
    Write-Log -Message "Disconnected Sessions CleanUp"
    Write-Log -Message "============================="
    $DisconnectedSessions = Get-Sessions | ? {$_.State -match $IncludeStates -and $_.UserName -ne ""} | Select ID, UserName
    Write-Log -Message "Logged off sessions"
    Write-Log -Message "-------------------"
    foreach ($session in $DisconnectedSessions)
    {
       logoff $session.ID
       Write-Log -Message $session.Username
    }
    Write-Log -Message " "
    Write-Log -Message "Finished"  

Bearbeiten:
Ich habe dieses Skript ursprünglich verwendet, um alle "getrennten" Sitzungen abzumelden und zu schließen. Wir haben einige Terminalserveranwendungen mit vielen Benutzern und eingeschränkten Lizenzen. Die getrennten Sitzungen blieben sehr lange offen und blieben manchmal auf unbestimmte Zeit geöffnet. Dies führte dazu, dass nicht verwendete Sitzungen einen Teil der Lizenzen in Anspruch nahmen und andere Benutzer keine Verbindung herstellen konnten.

  • Ich führe das Skript mit einer geplanten Aufgabe aus, um regelmäßig
    Sitzungen auf einigen meiner Server zu überprüfen und zu trennen. Es arbeitet autonom,
    ohne dass eine Interaktion erforderlich ist.
  • Ich verwende es auf Windows 2008 R2 Server- und Windows 2012 R2 Server-Betriebssystemen.
  • Es werden nur Sitzungen geschlossen, deren Verbindung unterbrochen wurde.
  • Es aktualisiert eine Protokolldatei mit den Benutzern oder Sitzungen, die es getrennt hat.
9953-div-37
quelle
Könnten Sie erklären, was es tut?
Konrad Gajewski
1
Hallo Konrad, ich habe die Antwort ein wenig bearbeitet und hoffe, dass es erklärt, was das Skript macht. Grundsätzlich schließt das Skript alle getrennten Sitzungen, die geöffnet bleiben, nachdem ein entfernter Benutzer die Verbindung zum Server getrennt hat.
9953-div-37
0

Möglicherweise wird noch ein Prozess ausgeführt, der den Abmeldeprozess blockiert. Überprüfen Sie die noch laufenden Prozesse für den betroffenen Benutzer. Beenden Sie dann den Vorgang nacheinander, um festzustellen, welche Ursache das Problem ist.

Überprüfen Sie auch den HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunRegistrierungsschlüssel, mit dem nur benötigte Prozesse gestartet werden. In 64bit ist es HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run.

QUentin
quelle
0

Sie können das Tool " Process Explorer " von Microsoft herunterladen und damit Ihr Problem lösen. Wenn Sie die Sitzungs-IDs haben, können Sie ihre jeweiligen Prozesse finden. Wenn eine Benutzersitzung getrennt wird, können Sie den Prozess mit Process Explorer beenden.

Vikram Iyer
quelle
0

Nicht genau die gleiche Umgebung (wir haben 2012r2), aber ein Neustart des Verwaltungsdienstes für virtuelle Hyper-V-Maschinen (VMMS) hat die Verbindung für mich freigegeben.

user244946
quelle
0

Sie müssen auf Prozess klicken und Prozess von allen Benutzern anzeigen, um die Verbindung zu trennen.

Warum erstellen Sie keine Sitzungsrichtlinie unter Konfiguration des Remotedesktop-Sitzungshosts? Beenden Sie die getrennte oder inaktive Sitzung nach einem bestimmten Intervall.

Anzeigename
quelle
0

Mein Fix: Auf einem anderen Netzwerkserver, den ich über das Computerverwaltungs-Tool mit dem Problemserver verbunden habe, habe ich in offenen Sitzungen mit der rechten Maustaste auf jede geöffnete Datei geklickt und sie geschlossen, und konnte dann über mstsc eine Verbindung herstellen

ITGal
quelle
0

Sie können jederzeit Powershell von Ihrem lokalen Computer aus und aus der Ferne verwenden

Invoke-command -computername <servername> -Credential (get-credential) { 
    $session = ((quser | ? { $_ -match <username> }) -split ' +' )[2]
    logoff $session
} 
Aden
quelle
Um Ihre Antwort noch nützlicher zu machen, ist es hilfreich, eine grundlegende Erklärung für die Funktionsweise dieses Befehls bereitzustellen. Möglicherweise sind nicht alle mit PowerShell vertraut, um es zu verstehen. Vielen Dank für Ihren Beitrag.
Ich sage Reinstate Monica
-1

Unglücklicherweise. Meine Benutzersitzung wurde getrennt. Der Task-Manager hat keine Prozesse angezeigt, die als Benutzer ausgeführt werden. Ich konnte den Benutzer nicht vom Task-Manager abmelden. Ich habe versucht, den Befehl zum Zurücksetzen der Sitzungs-ID auszuführen, und bin am Ende ebenfalls eingefroren. Am Ende musste ich mich in einer anderen Sitzung als Administrator anmelden, den Account löschen und einen neuen erstellen.

Mac671
quelle
-1

Haben Sie versucht, den Benutzer vom Remotedesktopdienste-Manager abzumelden? Gehen Sie zu Verwaltung -> Remotedesktopdienste -> Remotedesktopdienste-Manager und melden Sie sich von der Sitzung ab. Es könnte klappen.

Christian
quelle
-1

Gehen Sie zum Startfenster und klicken Sie auf Ihren Namen

Siehe Beispiel hier

syb
quelle
Ich denke, dies ist eine Wiederholung mehrerer der anderen Antworten hier (von denen die meisten etwas ausführlicher sind) - z . B. serverfault.com/a/804638/402709 . Es kann hilfreich sein , Ihre Antwort zu verbessern , um sie mit einem bestimmten Kontext und Ihrer eigenen Erfahrung zu erweitern.
iwaseatenbyagrue
Das glaube ich nicht, aber es macht mir Spaß.
Syb