Nie można się wylogować, rozłączyć ani zresetować użytkownika serwera terminali w środowisku produkcyjnym

19

Szukam pomysłów, jak rozłączyć, wylogować się lub zresetować sesję użytkownika na serwerze terminali w 2008 r. (Nie mogę się zalogować jako użytkownik, ponieważ jest on całkowicie zamknięty). Jest to środowisko produkcyjne, więc ponowne uruchomienie serwera lub zrobienie czegoś w całym systemie nie wchodzi w rachubę. Jakieś sztuczki Powershell, które nam w tym pomogą?

Próbowaliśmy się rozłączyć, wylogować użytkownika i zresetować sesję, a także zabić procesy sesji, bezpośrednio z tego samego serwera terminali (od menedżera zadań, Menedżera usług terminalowych i Monitora zasobów) bez rezultatów.

Wsparcie!


AKTUALIZACJA: Ostatecznie zrestartowaliśmy serwer, ponieważ żadne inne próby, o których moglibyśmy pomyśleć, nie zadziałały. Pozostawię to pytanie otwarte, mając nadzieję, że ktoś może uzyskać więcej informacji na temat tego jednego problemu i jego potencjalnych poprawek

l0c0b0x
źródło
2
Mam dokładnie ten sam problem na moich serwerach terminali Windows 2008 R2 SP1. Po prostu losowo się zawieszają, a użytkownicy nie mogą się wylogować ani zalogować do serwera. Nie mogę zalogować się lokalnie jako administrator lokalny lub administrator domeny. Jedynym sposobem na połączenie się z serwerem jest użycie compmgmt.msc, ale nawet tutaj nie widzę żadnych problemów w dziennikach zdarzeń. Na pewnym etapie pojawia się komunikat, że usługa IMA nie odpowiada, a serwer został usunięty z farmy. Jedynym sposobem na rozwiązanie tego problemu jest ponowne uruchomienie serwera. Wyłącz i włącz ponownie. Nie byłem w stanie zawęzić przyczyny tego do niczego i i
1
Potencjalnie przydatne linki dla każdego, kto napotka ten problem, idąc naprzód
JohnLBevan

Odpowiedzi:

7

Rozwiązaniem tego samego problemu było dla mnie wyeliminowanie wszystkich procesów uruchomionych na zablokowanym koncie z poziomu Menedżera zadań, a następnie mogłem po prostu wylogować się z tego konta (z konta administratora).

Użytkownik mógł następnie zalogować się ponownie na koncie.

Ponowne uruchomienie nie było konieczne i nie trzeba było pobierać oprogramowania innych firm.

Laoslady
źródło
-Dziękuję, uratowałem mnie przed ponownym uruchomieniem serwera! Naprawdę nie chciałem wyrzucać wszystkich w ciągu dnia z powodu 1 zablokowanej sesji.
MAW74656
Czy zabicie tych procesów jest bezpieczne? Moja użytkownik posiada csrss.exe, dwm.exe, LoginUI.exe, i winlogon.exe. Myślałem, że zabicie winlogon.exewywoła BSOD…
binki
6

Chcę podzielić się tym, jak zresetowałem konto bez konieczności ponownego uruchamiania serwera. Przede wszystkim musisz mieć dostęp administratora do serwera. Korzystam z następującej opcji logowania: mstsc / v: nazwa_serwera / console / admin w celu uzyskania dostępu do serwera. Następnie w „Windows Taks Manager” przejdź do zakładki Użytkownicy i przejdź prawym przyciskiem myszy do konta, które chcesz „Wylogować”, wybierz Wyloguj. To powinno zwolnić zablokowaną sesję używaną przez to konto.

James
źródło
1
tyle że nie zawsze. Dodatkowo OP powiedział, że już tego próbowali.
BeowulfNode42
W przypadku tego problemu przycisk Wyloguj się w Menedżerze zadań → Użytkownicy nic nie robi.
binki
5

Prostą odpowiedzią jest uruchomienie wiersza polecenia z podwyższonym poziomem uprawnień i wpisanie „Taskmgr”, a następnie pozwoli wylogować się z sesji na karcie UŻYTKOWNICY. Nie będzie działać bez udziału w podwyższonej sesji.

John N.
źródło
Testowane i to rozwiązanie działało.
Overmind
1
Nie dla mnie. Nie może także używać menedżera zadań jako administratora do zabijania procesów użytkownika.
BeowulfNode42
3

Możesz uruchomić polecenie cmd, wykonać sesję zapytania , sprawdzić identyfikator sesji, która ma zostać zabita, a następnie wykonać sesję resetowania . Na przykład, jeśli w przypadku sesji zapytania otrzymujesz nazwę sesji rdp-tcp # 1, którą chcesz zabić, możesz wykonać sesję resetowania rdp-tcp # 1 i zabić ją.

grem
źródło
Dzięki, ale to też nie pomogło.
l0c0b0x
Po uruchomieniu reset session 9to polecenie po prostu się zawiesza. Moja sesja nadal ma cztery procesy uruchomione bez pojawiające się być aktywny crss.exe, dwm.exe, LogonUI.exe, i winlogon.exe. i.imgur.com/cFM62RA.png i dane query session 9wyjściowe No User exists for 9.
binki
3

Przypuszczam, że to samo stało się dzisiaj na moim serwerze terminali Win2008R2. Symptomy to: 1. Zadzwonił do mnie z komunikatem „połączenie” zawiesza się na zawsze ”. Jest tylko prostym użytkownikiem, więc nie mogę się spodziewać szczegółowego opisu problemu. 2. Próbowano wylogować się / zresetować sesję (co zwykle pomaga w takich przypadkach) - nie działało. Sesja nadal zawiesza się na liście ze statusem „rozłączony”. 3. Próbowałem zabić wszystkie procesy dla tego użytkownika - nie pomogło. Sesja trwa i nie chce zostać zabita.

Rozwiązaniem było - połącz się jako użytkownik (zaloguj się przy użyciu jego poświadczeń, jeśli możesz zresetować hasło lub skorzystaj z pomocy zdalnej, aby zobaczyć, co dzieje się na jego komputerze) i zobacz, co dzieje się w oknie logowania. Podczas łączenia kliknąłem przycisk „szczegóły” klienta RDP - i oto był komunikat o błędzie, że winlogon zrobił coś złego, czekał na kliknięcie przez użytkownika przycisku „spróbuj ponownie / zignoruj ​​/ etc”, a ponieważ był to wszechmocny login wszystkie te dziwne zachowania.

ps Nie mogłem znaleźć żadnego sposobu, aby naprawdę zmusić do zabicia sesji :(


źródło
Naprawiłem to dla mnie! Czekało, aż użytkownik zdecyduje się odłączyć innego użytkownika lub nacisnąć Anuluj. Nacisnąłem przycisk Anuluj, a teraz ten Użytkownik, który utknął w zakładce Użytkownicy Menedżera zadań, zniknął. Dzięki!
binki
Tak wyglądała moja sytuacja, gdy był to problem: i.imgur.com/W6eO5wW.png i.imgur.com/EpPwyJc.png i.imgur.com/cFM62RA.png Ponadto korzystam z systemu Windows Server 2016
binki
3

Właśnie mieliśmy podobny problem z naszym serwerem pulpitu zdalnego Windows Server 2008 R2. Sesja użytkownika pokazała „Aktywny”, gdy patrzy się na RDS Manager, ale nie ma powiązanego identyfikatora sesji # ani podłączonego urządzenia (oba były puste).

Wszystkie powyższe wskazówki nie rozwiązały problemu. Podczas nawiązywania połączenia jako użytkownik, o którym mowa, wrócił komunikat o błędzie informujący, że serwer terminali był zajęty, i spróbuj ponownie później lub skontaktuj się z administratorem.

Skończyło się również na ponownym uruchomieniu serwera.

AdmBorkBork
źródło
2

Miałem ten sam problem w systemie Windows Server 2016. Użytkownik nie mógł się zalogować.

Próbowałem więc wykonać następujące kroki, aby odłączyć osieroconą sesję:

  1. na CLI qwinsta wyświetla wszystkie dostępne sesje, nieaktywne i aktywne, jest jedna rozłączona sesja (zwana na zrzucie ekranu „getr.”) bez nazwy użytkownika, ale identyfikator sesji.

pokaż aktywne sesje i zabij je

  1. z identyfikatorem sesji (7) od 1. Próbowałem zabić tę sesję za pomocą sesji resetowania 7 ( fyi : rwinsta jest aliasem sesji resetowania)

  2. działało przez jedną sesję, ale następnym razem po prostu nie miało żadnego efektu, więc otworzyłem menedżera zadań i zakładkę użytkownika. Znajdziesz tam jedną rozwijaną listę przypisaną do każdego użytkownika pulpitu zdalnego - jedna lista nie zawierała nazwy użytkownika i pokazywała tylko 4 uruchomione zadania.

  3. Próbowałem oczywistego: Wylogowanie użytkownika. Bez żadnego efektu.

próba wylogowania użytkownika

  1. Próbowałem więc zakończyć te 4 zadania przypisane do tego użytkownika. Bądź ostrożny, ponieważ niektóre zadania, przede wszystkim csrss.exe, po zabiciu, również spowodowałyby restart systemu. Pominąłem je i właśnie zabiłem kilka oczywistych zadań RDP.

Po kroku / próbie 4 nawet ostatnia zawieszona sesja została zabita, a użytkownik mógł zalogować się ponownie

  1. Jeśli to nadal nie działa, wypróbuj to rozwiązanie z innego pytania : Kiedy łączysz się z klientem RDP, kliknij przycisk „szczegóły”. Tam powinieneś zobaczyć błąd i możesz nawet kliknąć ponów próbę lub zignorować .
nr
źródło
Czy możesz sprecyzować, które procesy zabiłeś, a które nie? Myślę, że należy pominąć winlogon.exe, ale jestem pewien, jak inni LoginUI.exe, csrss.exei dwm.exe.
binki
Objawy drugiej sesji brzmią podobnie do mojej i serverfault.com/a/176080/164429 . Prawdopodobnie możesz dodać „Połącz” jako krok do wypróbowania bardziej kompletnego rozwiązania, a może nawet uniknąć konieczności zabijania procesów.
binki
@binki powinien to być „csrss.exe” - jeśli zabijesz ten proces, system uruchomi się ponownie.
nr
1

Warto sprawdzić, czy użytkownik nie ma okna podręcznego poświadczeń ukrytego za oknem pulpitu zdalnego za pomocą klawiszy Alt + Tab.

Współpracownik miał ten sam problem; nie mógł się wylogować ani zresetować, a wszystkie jego procesy zostały ręcznie zamknięte. Kiedy próbowałem uzyskać dostęp do interfejsu GUI dla systemu, z którego on zdalnie się odsunął, znalazłem skrzynkę poświadczeń ukrytą za zdalną sesją.

Kutrayn
źródło
1

Byłbym w tej samej sytuacji: Windows Server 2008 R2 z usługami pulpitu zdalnego, połączenie RDP skonfigurowane do wylogowywania użytkowników po sesji nieaktywnej lub rozłączonej po 3 godzinach, a niektóre sesje pozostały zablokowane. Próbowałem się wylogować za pomocą Menedżera pulpitu zdalnego i programu qwinsta / quser, ale bez powodzenia.

Oto jak to rozwiązałem:

  1. Znalazłem identyfikator sesji za pomocą qwinsta.
  2. Znalazłem PID winlogon.exedla zawieszonej sesji query process /ID:yourid.
  3. Zabiłem ten proces taskkill /f /PID yourPID.

Tak trzymać. W przeciwnym razie chciałbym znaleźć rozwiązanie tego problemu.

curropar
źródło
1

Dla mnie zadziałało:

  • zaloguj się na serwerze
  • otwórz menedżera zadań
  • poszukaj użytkownika na karcie użytkownika
  • kliknij prawym przyciskiem myszy, połącz, wprowadź hasło użytkownika, zobaczyłem ekran „Proszę czekać”
  • naciśnij alt-tab, który wylogował mnie z serwera i wylogował również użytkownika
PhDJ
źródło
1

Miałem ten problem z zablokowanymi użytkownikami aplikacji pulpitu zdalnego. Napisałem ten skrypt Powershell, aby uruchamiał się zgodnie z zaplanowanym zadaniem, aby wylogować użytkowników, którzy przez ponad 2 minuty pokazywali się jako rozłączeni. Jedyną wymaganą edycją jest NAZWA SERWERA, którą ustawiłem, aby wykluczyć Serwer Brokera usług pulpitu zdalnego, jednak możesz wykluczyć dowolny serwer, który Ci się podoba, lub wcale.

Mój skrypt został napisany dla systemu Windows Server 2012 R2, przy okazji ...

Skrypt robi to:

  • Pobiera listę wszystkich sesji użytkownika pulpitu zdalnego.
  • Ignoruje wszystkie sesje, które nie mówią „STATE_DISCONNECTED”.
  • Ignoruje Broker Server (lub jakikolwiek inny serwer)
  • Ignoruje wszystkie sesje bez identyfikatora zunifikowanej sesji
  • Ignoruje wszystkie sesje, które nie mają czasu rozłączenia
  • W przypadku sesji, które mają czas rozłączenia, sprawdza bieżący czas i jeśli różnica czasu między teraz a czasem rozłączenia jest większa niż X minut (w tym przypadku 2), zabija proces logowania.
  • Próbuje także wydać polecenie wylogowania (najprawdopodobniej zakończy się niepowodzeniem po zabiciu procesu winlogon).

Mi to pasuje! Mam nadzieję, że pomoże to komuś innemu! :)

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'
            }
         }
      }

Lub jeśli wolisz wersję, którą możesz zobaczyć, co dzieje się na ekranie:

 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
źródło
1

Utwórz plik w notatniku i nazwij go findsession.cmd. Wpisz polecenie Query Session / server: servername | znajdź / i "% 1" i zapisz w katalogu. Utwórz kolejny plik o nazwie resetsession.cmd i wprowadź polecenie Resetuj sesję% 1 / server:% 2 i zapisz.

W wierszu polecenia przejdź do katalogu, w którym zapisałeś te pliki, i wpisz findsession nazwa użytkownika (login użytkownika, którego próbujesz znaleźć). Naciśnij Enter, a powinieneś zobaczyć login i identyfikator sesji. Wpisz resetsession.cmd ID Nazwa serwera, aby zresetować tę sesję. Używam tego codziennie i jest super szybki do znajdowania użytkowników i resetowania ich sesji.

Sysadmin
źródło
skorzystaj z opcji formatowania tekstu, aby wyróżnić polecenia i zwiększyć czytelność. To dobra odpowiedź, ale proszę ją edytować.
Marco
Nie ma sensu pisać plików wsadowych, gdy polecenia są tak krótkie i trzeba by im przekazać argumenty
binki,
1
  1. Znajdź identyfikator sesji za pomocą qwinsta.
  2. Zabij wszystkie procesy w ramach sesji taskkill /FI "SESSION eq 1" /F, zakładając, że identyfikator sesji, który chcesz zakończyć, zwrócony z qwinsta to 1.

To działało na Server 2012 wersja 6.2 Build 9200, spodziewałbym się, że będzie działać na wszystkich wersjach systemu Windows.

Wola
źródło
1

Ten skrypt power-shell działał dla mnie, daje nawet ładny plik dziennika. Mam to stąd. : Mam nadzieję, że pomoże to komuś innemu, ponieważ inne odpowiedzi miały wiele warunków wstępnych i nie działały dla mnie.

    # .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"  

Edycja:
Pierwotnie użyłem tego skryptu, aby się wylogować i zamknąć wszystkie sesje „rozłączone”. Mamy kilka aplikacji serwera terminali z wieloma użytkownikami i ograniczonymi licencjami. Odłączone sesje pozostawały otwarte przez bardzo długi czas, a czasem pozostawały otwarte przez czas nieokreślony. Spowodowało to nieużywane sesje, które zajęłyby niektóre licencje, a w rezultacie inni użytkownicy nie mogliby się połączyć.

  • Uruchamiam skrypt za pomocą zaplanowanego zadania, aby regularnie sprawdzać i
    rozłączać sesje na niektórych moich serwerach. Działa autonomicznie,
    bez konieczności jakiejkolwiek interakcji.
  • Używam go w systemach operacyjnych Windows 2008 R2 Server i Windows 2012 R2 Server.
  • Zamyka tylko sesje, które zostały odłączone.
  • Aktualizuje plik dziennika z użytkownikami lub sesjami, które rozłączył.
9953-div-37
źródło
Czy możesz wyjaśnić, co to robi?
Konrad Gajewski,
1
Cześć Konrad, trochę zredagowałem odpowiedź i mam nadzieję, że wyjaśni ona, co robi skrypt. Zasadniczo skrypt zamyka wszystkie odłączone sesje, które pozostają otwarte po odłączeniu się zdalnego użytkownika od serwera.
9953-div-37
0

Być może nadal działa proces blokujący proces wylogowywania. Sprawdź nadal działające procesy dla dotkniętego użytkownika. Następnie zabijaj proces jeden po drugim, aby zobaczyć, która z nich powoduje problem.

Sprawdź także HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Runklucz rejestru, który tylko potrzebne Procesy są uruchomione. W wersji 64-bitowej jest HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run.

quentin
źródło
0

Możesz pobrać narzędzie „ Process Explorer ” z firmy Microsoft i użyć go do rozwiązania problemu. Jeśli masz identyfikatory sesji, możesz znaleźć odpowiednie procesy. Następnie, jeśli sesja użytkownika zostanie rozłączona, możesz zabić proces za pomocą Process Explorer.

Vikram Iyer
źródło
0

Niezupełnie to samo środowisko (mamy 2012r2), ale ponowne uruchomienie usługi zarządzania maszyną wirtualną Hyper-V (VMMS) zwolniło połączenie dla mnie.

użytkownik244946
źródło
0

Musisz kliknąć na proces i pokazać proces wszystkim użytkownikom, a wtedy będziesz mógł się rozłączyć.

dlaczego nie utworzyć zasad sesji w ramach konfiguracji hosta sesji pulpitu zdalnego i zakończyć sesję rozłączoną lub bezczynną po określonym czasie.

Wyświetlana nazwa
źródło
0

Moja poprawka: w innym serwerze sieciowym połączyłem się z serwerem problemowym za pomocą narzędzia do zarządzania komputerem, w otwartych sesjach kliknąłem prawym przyciskiem myszy i zamykałem każdy otwarty plik, a następnie mogłem połączyć się za pomocą mstsc

ITGal
źródło
0

zawsze możesz użyć programu PowerShell z lokalnego komputera i zrobić to zdalnie

Invoke-command -computername <servername> -Credential (get-credential) { 
    $session = ((quser | ? { $_ -match <username> }) -split ' +' )[2]
    logoff $session
} 
Aden
źródło
Aby Twoja odpowiedź była jeszcze bardziej przydatna, pomocne byłoby podstawowe wyjaśnienie działania tego polecenia. Nie każdy może mieć wystarczające doświadczenie z programem PowerShell, aby to zrozumieć. Dzięki za wkład.
Mówię: Przywróć Monikę
-1

Niestety. Moja sesja użytkownika została rozłączona. Menedżer zadań nie pokazał żadnych procesów uruchomionych jako użytkownik. Nie mogłem wylogować użytkownika z menedżera zadań. Próbowałem zresetować polecenie id sesji i również się zawiesiłem. Musiałem skończyć z zalogowaniem się w innej sesji jako administrator, usunięcie konta i ponowne utworzenie nowego.

Mac671
źródło
-1

Czy próbowałeś wylogować użytkownika z Menedżera usług pulpitu zdalnego? Przejdź do Narzędzia administracyjne -> Usługi pulpitu zdalnego -> Menedżer usług pulpitu zdalnego i wyloguj się z sesji. To może działać.

chrześcijanin
źródło