프로덕션 환경에서 터미널 서버 사용자를 로그 오프, 연결 해제 또는 재설정 할 수 없음


19

2008 터미널 서버에서 사용자 세션의 연결을 끊거나 로그 오프하거나 다시 설정하는 방법에 대한 아이디어를 찾고 있습니다 (완전히 잠겨있는 상태에서 사용자로 로그인 할 수 없음). 이것은 프로덕션 환경이므로 서버를 재부팅하거나 시스템 전체에서 무언가를 수행하는 것은 당연한 일입니다. 이 작업에 도움이되는 Powershell 요령이 있습니까?

우리는 동일한 터미널 서버 (작업 관리자, 터미널 서비스 관리자 및 리소스 모니터에서 직접)에서 결과없이 세션 연결을 끊고 사용자를 로그 오프 한 다음 세션을 재설정하려고 시도했습니다.

도움!


업데이트 : 우리는 다른 시도가 없었기 때문에 서버를 재부팅했습니다. 누군가이 문제에 대해 더 많은 정보를 가질 수 있기를 바라면서이 질문을 열어 두겠습니다.


2
Windows 2008 R2 SP1 터미널 서버에서 똑같은 문제가 있습니다. 그들은 무작위로 중단되며 사용자는 서버에 로그 오프하거나 로그온 할 수 없습니다. 로컬 관리자 또는 도메인 관리자로 로컬에 로그온 할 수 없습니다. 서버에 연결하는 유일한 방법은 compmgmt.msc를 사용하는 것이지만 여기서도 이벤트 로그에 문제가 없습니다. 어떤 단계에서 IMA 서비스가 응답하지 않고 서버가 팜에서 제거되었다는 메시지가 나타납니다. 이 문제를 해결하는 유일한 방법은 서버 하드를 재부팅하는 것입니다. 전원을 껐다가 다시 켜십시오. 나는 이것의 원인을 무엇으로 좁힐 수 없었으며,



답변:


7

이 같은 문제를 해결하기 위해 내가 일한 것은 작업 관리자에서 잠긴 계정으로 실행되는 모든 프로세스를 종료 한 다음 관리자 계정에서 해당 계정을 간단히 로그 오프 할 수있었습니다.

그런 다음 사용자는 계정으로 다시 로그온 할 수있었습니다.

재부팅이 필요없고 타사 소프트웨어를 다운로드 할 필요가 없었습니다.


감사합니다. 서버를 재부팅하지 않아도됩니다. 1 회의 세션으로 인해 근무 시간 동안 모두를 쫓아 내고 싶지 않았습니다.
MAW74656

이러한 프로세스를 종료해도 안전합니까? 내 사용자가 csrss.exe, dwm.exe, LoginUI.exe,와 winlogon.exe. 살해 winlogon.exe가 BSOD를 유발할 것이라고 생각했습니다 …
binki

6

서버를 재부팅하지 않고도 계정을 재설정하는 방법을 공유하고 싶습니다. 우선 서버에 대한 관리자 액세스 권한이 있어야합니다. 서버에 액세스하기 위해 mstsc / v : servername / console / admin 로그온 옵션 을 사용합니다. 그런 다음 "Windows Taks Manager"에서 사용자 탭으로 이동하여 "로그 오프"할 계정을 마우스 오른쪽 단추로 클릭하고 로그 오프를 선택하십시오. 그러면 해당 계정에서 사용하는 잠긴 세션이 해제됩니다.


1
항상 그런 것은 아닙니다. 게다가 OP는 이미 이것을 시도했다고 말했다.
BeowulfNode42

이 문제의 경우 작업 관리자 → 사용자의 로그 아웃 버튼이 아무 것도 수행하지 않습니다.
binki

5

간단한 대답은 관리자 권한 명령 프롬프트를 실행하고 "Taskmgr"을 입력하면 USERS 탭에서 세션을 로그 오프 할 수 있다는 것입니다. 높은 세션에 있지 않으면 작동하지 않습니다.


테스트 및 솔루션이 작동했습니다.
Overmind

1
나를 위해 아닙니다. 또한 작업 관리자를 관리자로 사용하여 사용자 프로세스를 종료 할 수 없습니다.
BeowulfNode42

3

cmd를 시작하고 쿼리 세션을 수행하고 종료 할 세션 의 ID를 확인한 후 세션 재설정 을 수행 할 수 있습니다 . 예를 들어, query session 을 사용하면 세션 이름 rdp-tcp # 1이 종료하려는 세션 이름 인 경우 reset session rdp-tcp # 1을 실행하여 종료 할 수 있습니다 .


고마워하지만 도움이되지 않았습니다.
l0c0b0x 2018 년

reset session 9그 명령을 실행하면 그냥 멈 춥니 다. : 내 세션은 네 개의 프로세스가 활성화 될 나타나지 않고 실행이 계속 crss.exe, dwm.exe, LogonUI.exe,와 winlogon.exe. i.imgur.com/cFM62RA.pngquery session 9출력 No User exists for 9.
binki

3

오늘 Win2008R2 터미널 서버에서도 동일한 상황이 발생했다고 가정합니다. 증상은 다음과 같습니다. 1. " '연결하는'메시지가 영원히 중단됩니다"라고 전화했습니다. 그는 단순한 사용자이므로 자세한 문제 설명을 기대할 수 없습니다. 2. 로그 오프 / 초기화 세션을 시도했습니다 (일반적으로 이러한 경우에 도움이 됨)-작동하지 않았습니다. 세션은 여전히 ​​'연결 끊김'상태의 목록에서 정지됩니다. 3. 해당 사용자의 모든 프로세스를 종료하려고 시도했지만 도움이되지 않았습니다. 세션이 지속되어 죽임을 거부합니다.

해결책은 사용자로 연결하고 (암호를 재설정하거나 원격 지원을 사용하여 자신의 컴퓨터에서 발생하는 상황을 볼 수있는 경우 자격 증명으로 로그인) 로그온 창에서 발생하는 상황을 확인하십시오. 연결할 때 RDP 클라이언트의 '세부 정보'버튼을 클릭했습니다. 여기서 winlogon에 문제가 있다는 오류 메시지가 나타났습니다. 사용자가 '다시 시도 / 무시 / 등'버튼을 클릭하기를 기다리고 있었고 전능 한 winlogon이기 때문에 그 모든 이상한 행동.

추신 : 나는 실제로 세션을 강제로 죽일 수있는 방법을 찾지 못했습니다 :(


이것은 나를 위해 그것을 고쳤다! 사용자가 다른 사용자의 연결을 끊거나 취소를 선택하기를 기다리고있었습니다. 취소를 누르면 작업 관리자의 사용자 탭에 고정 된 사용자가 사라졌습니다. 감사!
binki

이것이 문제 일 때의 상황입니다. i.imgur.com/W6eO5wW.png i.imgur.com/EpPwyJc.png i.imgur.com/cFM62RA.png 또한 Windows Server 2016을 사용하고 있습니다
binki

3

우리는 Windows Server 2008 R2 원격 데스크톱 서버와 비슷한 문제를 겪었습니다. RDS Manager를 볼 때 사용자 세션에 "Active"가 표시되었지만 연결된 세션 ID # 또는 연결된 장치가 없습니다 (둘 다 비어 있음).

위의 모든 트릭으로 문제가 해결되지 않았습니다. 문제의 사용자로 연결할 때 터미널 서버가 사용 중이라는 메시지가 나타나고 나중에 다시 시도하거나 관리자에게 문의하십시오.

우리는 서버 재부팅도 멈췄습니다.


2

Windows Server 2016에서 동일한 문제가 발생했습니다. 사용자가 로그인 할 수 없습니다.

그래서 고아 세션의 연결을 끊기 위해 다음 단계를 시도했습니다.

  1. CLI에서 qwinsta 는 사용 가능한 모든 세션, 비활성 및 활성 세션을 나열합니다. 연결이 끊긴 세션 (스크린 샷에서 "getr."라고 함)에는 사용자 이름이없고 세션 ID가 있습니다.

활동적인 세션을 보여주고 죽이십시오

  1. 세션 ID (7)가 1부터 시작합니다. 재설정 세션 7 중 하나를 사용하여이 세션을 종료하려고했습니다 (fyi : rwinsta 는 재설정 세션의 별명 임)

  2. 한 세션 동안 작동했지만 다음에는 효과가 없었으므로 작업 관리자와 사용자 탭을 열었습니다. 모든 원격 데스크톱 사용자에게 할당 된 하나의 확장 가능한 목록이 있습니다. 하나의 목록에는 사용자 이름이 없었으며 4 개의 작업 만 실행되었습니다.

  3. 나는 명백한 것을 시도했다 : 사용자 로그 오프. 효과가 없습니다.

사용자 로그 오프

  1. 그래서이 사용자에게 할당 된 4 가지 작업을 끝내려고했습니다. csrss.exe와 같은 일부 작업은 종료시 시스템이 재부팅 될 수 있으므로주의하십시오. 나는 그것들을 건너 뛰고 명백한 RDP 작업을 죽였습니다.

Step / Try 4 후에도 마지막으로 충돌 한 세션이 종료되어 사용자가 다시 로그인 할 수있었습니다

  1. 그래도 문제가 해결되지 않으면 다른 질문 에서이 해결 방법을 시도해보십시오 . RDP 클라이언트에 연결할 때 "세부 사항"단추를 클릭하십시오. 오류가 표시되고 다시 시도 또는 무시를 클릭 할 수도 있습니다 .

어떤 프로세스를 종료했는지, 어떤 프로세스를 종료하지 않을 것인지에 대해 더 구체적으로 설명 할 수 있습니까? 내가 건너해야한다고 생각 winlogon.exe하지만, 같은 다른 사람에 대한 확신입니다 LoginUI.exe, csrss.exe하고 dwm.exe.
binki

두 번째 세션의 증상은 mine 및 serverfault.com/a/176080/164429 와 비슷합니다 . 보다 완벽한 솔루션을 시도하고 프로세스를 종료하지 않아도되는 단계로“Connect”를 추가 할 수 있습니다.
binki

@binki "csrss.exe"여야합니다.이 프로세스를 종료하면 시스템이 다시 시작됩니다.
nr

1

사용자에게 alt + tab을 사용하여 원격 데스크톱 창 뒤에 숨겨진 자격 증명 팝업 상자가 없는지 확인하는 것이 좋습니다.

동료도 같은 문제를 겪고있었습니다. 로그 오프하거나 재설정 할 수 없으며 모든 프로세스가 수동으로 종료되었습니다. 그가 원격 시스템에서 GUI에 액세스하려고 할 때 원격 세션 뒤에 자격 증명 상자가 숨겨져 있음을 발견했습니다.


1

같은 상황이 있습니다. 원격 데스크톱 서비스가있는 Windows Server 2008 R2, 세션이 비활성 상태이거나 3 시간 동안 연결이 끊어진 후에 RDP 연결이 사용자를 로그 오프하도록 설정했지만 일부 세션은 여전히 ​​잠겨 있습니다. 원격 데스크톱 관리자와 qwinsta / quser로 모두 로그 오프하려고했지만 성공하지 못했습니다.

내가 해결 한 방법은 다음과 같습니다.

  1. 의 세션 ID를 찾았습니다 qwinsta.
  2. 으로 winlogon.exe중단 된 세션 의 PID를 찾았습니다 query process /ID:yourid.
  3. 로 프로세스를 종료했습니다 taskkill /f /PID yourPID.

잘 했어. 그렇지 않으면이 문제에 대한 해결책을 찾고 싶습니다.


1

나를 위해 일한 것은 다음과 같습니다.

  • 서버에 로그온
  • 열린 작업 관리자
  • 사용자 탭에서 사용자를 찾으십시오
  • 마우스 오른쪽 버튼을 클릭하고 연결하여 사용자 비밀번호를 입력 한 후 '잠시 기다려주십시오'화면이 표시됩니다.
  • alt-tab을 누르면 서버에서 로그 오프되고 사용자도 로그 오프됩니다.

1

잠긴 원격 데스크톱 응용 프로그램 사용자와 함께이 문제가 발생했습니다. 이 Powershell 스크립트를 작성하여 예약 된 작업을 실행하여 2 분 이상 연결이 끊어진 것으로 표시된 사용자를 로그 오프했습니다. 필요한 유일한 편집은 SERVERNAME입니다. 은 원격 데스크톱 브로커 서버를 제외하도록 설정 이지만 원하는 서버를 전혀 제외하거나 전혀 제외 할 수 없습니다.

내 스크립트는 Windows Server 2012 R2 용으로 작성되었습니다 ...

스크립트는 다음을 수행합니다.

  • 모든 원격 데스크톱 사용자 세션 목록을 가져옵니다.
  • "STATE_DISCONNECTED"가 아닌 세션은 무시합니다.
  • 브로커 서버 (또는 다른 서버)를 무시합니다
  • 통합 세션 ID가없는 세션을 무시합니다.
  • 연결 끊기 시간이없는 세션을 무시합니다
  • 연결 끊기 시간이있는 세션의 경우 현재 시간을 확인하고 지금과 연결 끊기 시간의 시간 차이가 X 분 (이 경우 2)보다 큰 경우 winlogon 프로세스를 종료합니다.
  • 또한 로그 오프 명령을 실행하려고 시도합니다 (winlogon 프로세스가 종료 된 후 실패 할 가능성이 높습니다).

그것은 나를 위해 작동합니다! 나는 그것이 다른 누군가를 돕기를 바랍니다! :)

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

또는 당신이 화면에 무슨 일이 일어나고 있는지 볼 수있는 버전을 선호한다면 :

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

1

메모장에서 파일을 작성하고 findsession.cmd라고합니다. Query Session / server 명령을 배치하십시오. servername | / i "% 1"을 (를) 찾아 디렉토리에 저장하십시오. resetsession.cmd라는 다른 파일을 작성하고 Reset Session % 1 / server : % 2 명령을 저장하십시오.

명령 프롬프트에서 해당 파일을 저장 한 디렉토리로 이동하여 findsession username (찾으려는 사용자의 로그인)을 입력하십시오. Enter 키를 누르면 로그인 및 세션 ID가 표시됩니다. resetsession.cmd ID Servername을 입력하면 해당 세션이 재설정됩니다. 나는 이것을 매일 사용하며 사용자를 찾고 세션을 재설정하는 것이 매우 빠릅니다.


텍스트 서식 옵션을 사용하여 명령을 강조하고 가독성을 높이십시오. 좋은 답변이지만 편집하십시오.
Marco

명령이 너무 짧을 때 배치 파일을 작성할 필요가 없으며 어쨌든 인수를 전달해야합니다.
binki

1
  1. 로 세션 ID를 찾으십시오 qwinsta.
  2. taskkill /FI "SESSION eq 1" /Fqwinsta에서 리턴하려는 세션 ID가 1이라고 가정하고 session 아래의 모든 프로세스 를 종료하십시오.

이것은 Server 2012 버전 6.2 빌드 9200에서 작동했으며 모든 버전의 창에서 작동 할 것으로 기대합니다.


1

이 파워 쉘 스크립트는 저에게 효과적이며 심지어 멋진 로그 파일을 제공합니다. 나는 여기 에서 그것을 얻었다 . : 다른 답변에 많은 전제 조건이 있거나 나에게 도움이되지 않았기 때문에 이것이 다른 사람에게 도움이되기를 바랍니다.

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

편집 :
원래이 스크립트를 사용하여 "연결이 끊긴"모든 세션을 로그 오프하고 닫았습니다. 많은 사용자와 제한된 라이센스를 가진 두 개의 터미널 서버 응용 프로그램이 있습니다. 연결이 끊긴 세션은 오랫동안 열린 상태로 유지되며 때로는 무기한으로 열린 상태로 유지됩니다. 이로 인해 사용하지 않는 세션이 발생하여 일부 라이센스를 사용하게되며 다른 사용자는 결과적으로 연결할 수 없게됩니다.

  • 예약 된 작업을 사용하여 스크립트를 실행하여
    일부 서버에서 세션 을 정기적으로 확인하고 연결을 끊습니다.
    상호 작용이 필요없이 자율적으로 작동 합니다.
  • Windows 2008 R2 Server 및 Windows 2012 R2 Server 운영 체제에서 사용합니다.
  • 연결이 끊어진 세션 만 닫습니다.
  • 연결을 끊은 사용자 또는 세션으로 '로그'파일을 업데이트합니다.

그것이 무엇을 설명 할 수 있습니까?
Konrad Gajewski

1
안녕하세요 Konrad, 나는 답변을 약간 편집하고 스크립트가 무엇을하는지 설명하기를 바랍니다. 기본적으로 스크립트는 원격 사용자가 서버에서 연결을 끊은 후에도 열려있는 모든 연결이 끊긴 세션을 닫습니다.
9953-div-37

0

로그 오프 프로세스를 차단하는 프로세스가 아직 실행 중일 수 있습니다. 영향을받는 사용자에 대해 여전히 실행중인 프로세스를 확인하십시오. 그런 다음 하나씩 프로세스를 종료하여 마녀가 문제를 일으키는 지 확인하십시오.

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run필요한 프로세스 만 시작된 레지스트리 키 도 확인하십시오 . 64 비트에서는입니다 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run.


0

Microsoft에서 " Process Explorer "도구를 다운로드 하여 문제를 해결하는 데 사용할 수 있습니다. 세션 ID가 있으면 해당 프로세스를 찾을 수 있습니다. 그런 다음 사용자 세션의 연결이 끊어지면 프로세스 탐색기를 사용하여 프로세스를 종료 할 수 있습니다.


0

정확히 동일한 환경 (2012r2가 있음)은 아니지만 Hyper-V VMMS (Virtual Machine Management Service)를 다시 시작하면 연결이 해제되었습니다.


0

프로세스를 클릭하고 모든 사용자의 프로세스를 표시해야 연결을 끊을 수 있습니다.

특정 간격 후에 원격 데스크톱 세션 호스트 구성 종료 연결이 끊어 지거나 유휴 세션에서 세션 정책을 작성하지 않는 이유는 무엇입니까?


0

내 수정 : 컴퓨터 관리 도구를 통해 문제 서버에 연결된 다른 네트워크 서버에서 열린 세션에서 열린 모든 파일을 마우스 오른쪽 버튼으로 클릭하고 닫은 다음 mstsc를 통해 연결할 수있었습니다.


0

항상 로컬 컴퓨터에서 powershell을 사용하여 원격으로 수행 할 수 있습니다

Invoke-command -computername <servername> -Credential (get-credential) { 
    $session = ((quser | ? { $_ -match <username> }) -split ' +' )[2]
    logoff $session
} 

답을 더 유용하게하려면이 명령의 작동 방식에 대한 기본 설명을 제공하면 도움이됩니다. 모든 사람이 PowerShell을 이해하기에 충분한 경험이있는 것은 아닙니다. 기여해 주셔서 감사합니다.
나는

-1

운수 나쁘게. 사용자 세션 연결이 끊어졌습니다. 작업 관리자는 사용자로 실행중인 프로세스를 표시하지 않았습니다. 작업 관리자에서 사용자를 로그 오프 할 수 없습니다. reset session id 명령을 시도 하고 결국 멈추었습니다. 관리자와 다른 세션에 로그인하여 계정을 삭제하고 새 계정을 다시 만들어야했습니다.


-1

원격 데스크톱 서비스 관리자에서 사용자를 로그 오프하려고 했습니까? 관리 도구-> 원격 데스크탑 서비스-> 원격 데스크탑 서비스 관리자로 이동하여 세션을 로그 오프하십시오. 작동 할 수 있습니다.


-1

시작 창으로 이동하여 이름을 클릭하십시오.

여기 샘플을 참조하십시오


나는 이것이 여기에있는 다른 답변 중 일부 (반복적으로 더 자세한 것)-예를 들어 serverfault.com/a/804638/402709 의 반복이라고 생각합니다 . 문맥과 경험에 따라 답 을 넓히기 위해 답향상시키는 데 도움이 될 수 있습니다.
iwaseatenbyagrue

나는 그렇게 생각하지 않지만 그것을 즐기십시오.
syb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.