RDP рд╕рддреНрд░рд╣рд░реВрдХреЛ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди

RDP рд╕рддреНрд░рд╣рд░реВрдХреЛ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди
рдореИрд▓реЗ рдХрд╛рдо рдЧрд░реЗрдХреЛ рд╕рдВрд╕реНрдерд╛рдорд╛ рд░рд┐рдореЛрдЯ рдХрд╛рдо рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛ рдирд┐рд╖реЗрдз рдЧрд░рд┐рдПрдХреЛ рдЫред рдерд┐рдпреЛред рдЧрдд рд╣рдкреНрддрд╛ рд╕рдореНрдоред рдЕрдм рд╣рд╛рдореАрд▓реЗ рддреБрд░реБрдиреНрддреИ рд╕рдорд╛рдзрд╛рдирдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреБрдкрд░реНтАНрдпреЛред рд╡реНрдпрд╡рд╕рд╛рдпрдмрд╛рдЯ - рдирдпрд╛рдБ рдХрд╛рд░реНрдп рдврд╛рдБрдЪрд╛рдорд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрджреИ, рд╣рд╛рдореАрдмрд╛рдЯ - PIN рдХреЛрдбрд╣рд░реВ рд░ рдЯреЛрдХрдирд╣рд░реВ, VPN, рд╡рд┐рд╕реНрддреГрдд рд▓рдЧрд┐рдЩ рд░ рдЕрдзрд┐рдХрдХреЛ рд╕рд╛рде PKIред
рдЕрдиреНрдп рдЪреАрдЬрд╣рд░реВ рдордзреНрдпреЗ, рдореИрд▓реЗ рд░рд┐рдореЛрдЯ рдбреЗрд╕реНрдХрдЯрдк рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЙрд░реНрдл тАЛтАЛрдЯрд░реНрдорд┐рдирд▓ рд╕реЗрд╡рд╛рд╣рд░реВ рд╕реЗрдЯрдЕрдк рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдерд┐рдПрдБред рд╣рд╛рдореАрд╕рдБрдЧ рд╡рд┐рднрд┐рдиреНрди рдбрд╛рдЯрд╛ рдХреЗрдиреНрджреНрд░рд╣рд░реВрдорд╛ рдзреЗрд░реИ RDS рддреИрдирд╛рддреАрд╣рд░реВ рдЫрдиреНред рдПрдЙрдЯрд╛ рд▓рдХреНрд╖реНрдп рднрдиреЗрдХреЛ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЖрдИрдЯреА рд╡рд┐рднрд╛рдЧрдХрд╛ рд╕рд╣рдХрд░реНрдореАрд╣рд░реВрд▓рд╛рдИ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░рд╣рд░реВрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХреНрд╖рдо рдкрд╛рд░реНрдиреБ рдерд┐рдпреЛред рддрдкрд╛рдИрд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ, рддреНрдпрд╣рд╛рдБ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдорд╛рдирдХ RDS рдЫрд╛рдпрд╛ рд╕рдВрдпрдиреНрддреНрд░ рдЫ, рд░ рдпрд╕рд▓рд╛рдИ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрди рдЧрд░реНрдиреЗ рд╕рдмреИрднрдиреНрджрд╛ рд╕рдЬрд┐рд▓реЛ рддрд░рд┐рдХрд╛ RDS рд╕рд░реНрднрд░рд╣рд░реВрдорд╛ рд╕реНрдерд╛рдиреАрдп рдкреНрд░рд╢рд╛рд╕рдХ рдЕрдзрд┐рдХрд╛рд░рд╣рд░реВ рджрд┐рдиреБ рд╣реЛред
рдо рдореЗрд░рд╛ рд╕рд╣рдХрд░реНрдореАрд╣рд░реВрд▓рд╛рдИ рд╕рдореНрдорд╛рди рд░ рдХрджрд░ рдЧрд░реНрдЫреБ, рддрд░ рдкреНрд░рд╢рд╛рд╕рдХ рдЕрдзрд┐рдХрд╛рд░рд╣рд░реВ рд╣рд╕реНрддрд╛рдиреНрддрд░рдг рдЧрд░реНрдиреЗ рдХреБрд░рд╛рдорд╛ рдо рдзреЗрд░реИ рд▓реЛрднреА рдЫреБред ЁЯЩВ рдорд╕рдБрдЧ рд╕рд╣рдордд рд╣реБрдиреЗрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐, рдХреГрдкрдпрд╛ рдХрдЯрд▓рд╛рдИ рдкрдЫреНрдпрд╛рдЙрдиреБрд╣реЛрд╕реНред

рдард┐рдХ рдЫ, рдХрд╛рд░реНрдп рд╕реНрдкрд╖реНрдЯ рдЫ, рдЕрдм рд╡реНрдпрд╛рдкрд╛рд░ рдорд╛ рддрд▓ рдЬрд╛рдФрдВред

1 рдХрджрдо

рд╕рдХреНрд░рд┐рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдорд╛ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдореВрд╣ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ RDP_Operators рд░ рдпрд╕рдорд╛ рддреА рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдЦрд╛рддрд╛рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЬрд╕рд▓рд╛рдИ рд╣рд╛рдореА рдЕрдзрд┐рдХрд╛рд░рд╣рд░реВ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрди рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВ:

$Users = @(
    "UserLogin1",
    "UserLogin2",
    "UserLogin3"
)
$Group = "RDP_Operators"
New-ADGroup -Name $Group -GroupCategory Security -GroupScope DomainLocal
Add-ADGroupMember -Identity $Group -Members $Users

рдпрджрд┐ рддрдкрд╛рдИрдВрд╕рдБрдЧ рдзреЗрд░реИ AD рд╕рд╛рдЗрдЯрд╣рд░реВ рдЫрдиреН рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рдЕрд░реНрдХреЛ рдЪрд░рдгрдорд╛ рдЬрд╛рдиреБ рдЕрдШрд┐ рд╕рдмреИ рдбреЛрдореЗрди рдирд┐рдпрдиреНрддреНрд░рдХрд╣рд░реВрдорд╛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирднрдПрд╕рдореНрдо рдкрд░реНрдЦрдиреБ рдкрд░реНрдЫред рдпреЛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ 15 рдорд┐рдиреЗрдЯ рднрдиреНрджрд╛ рдмрдвреА рд▓рд╛рдЧреНрджреИрдиред

2 рдХрджрдо

рдкреНрд░рддреНрдпреЗрдХ RDSH рд╕рд░реНрднрд░рдорд╛ рдЯрд░реНрдорд┐рдирд▓ рд╕рддреНрд░рд╣рд░реВ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрди рд╕рдореВрд╣рд▓рд╛рдИ рдЕрдзрд┐рдХрд╛рд░ рджрд┐рдФрдВ:

Set-RDSPermissions.ps1

$Group = "RDP_Operators"
$Servers = @(
    "RDSHost01",
    "RDSHost02",
    "RDSHost03"
)
ForEach ($Server in $Servers) {
    #╨Ф╨╡╨╗╨╡╨│╨╕╤А╤Г╨╡╨╝ ╨┐╤А╨░╨▓╨╛ ╨╜╨░ ╤В╨╡╨╜╨╡╨▓╤Л╨╡ ╤Б╨╡╤Б╤Б╨╕╨╕
    $WMIHandles = Get-WmiObject `
        -Class "Win32_TSPermissionsSetting" `
        -Namespace "rootCIMV2terminalservices" `
        -ComputerName $Server `
        -Authentication PacketPrivacy `
        -Impersonation Impersonate
    ForEach($WMIHandle in $WMIHandles)
    {
        If ($WMIHandle.TerminalName -eq "RDP-Tcp")
        {
        $retVal = $WMIHandle.AddAccount($Group, 2)
        $opstatus = "╤Г╤Б╨┐╨╡╤И╨╜╨╛"
        If ($retVal.ReturnValue -ne 0) {
            $opstatus = "╨╛╤И╨╕╨▒╨║╨░"
        }
        Write-Host ("╨Ф╨╡╨╗╨╡╨│╨╕╤А╨╛╨▓╨░╨╜╨╕╨╡ ╨┐╤А╨░╨▓ ╨╜╨░ ╤В╨╡╨╜╨╡╨▓╨╛╨╡ ╨┐╨╛╨┤╨║╨╗╤О╤З╨╡╨╜╨╕╨╡ ╨│╤А╤Г╨┐╨┐╨╡ " +
            $Group + " ╨╜╨░ ╤Б╨╡╤А╨▓╨╡╤А╨╡ " + $Server + ": " + $opstatus + "`r`n")
        }
    }
}

3 рдХрджрдо

рд╕реНрдерд╛рдиреАрдп рд╕рдореВрд╣рдорд╛ рд╕рдореВрд╣ рдердкреНрдиреБрд╣реЛрд╕реН рд░рд┐рдореЛрдЯ рдбреЗрд╕реНрдХрдЯрдк рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рдкреНрд░рддреНрдпреЗрдХ RDSH рд╕рд░реНрднрд░рдорд╛ред рдпрджрд┐ рддрдкрд╛рдЗрдБрдХрд╛ рд╕рд░реНрднрд░рд╣рд░реВ рд╕рддреНрд░ рд╕рдЩреНрдХрд▓рдирд╣рд░реВрдорд╛ рдЬреЛрдбрд┐рдПрдХрд╛ рдЫрдиреН рднрдиреЗ, рд╣рд╛рдореА рд╕рдЩреНрдХрд▓рди рд╕реНрддрд░рдорд╛ рдпреЛ рдЧрд░реНрдЫреМрдВ:

$Group = "RDP_Operators"
$CollectionName = "MyRDSCollection"
[String[]]$CurrentCollectionGroups = @(Get-RDSessionCollectionConfiguration -CollectionName $CollectionName -UserGroup).UserGroup
Set-RDSessionCollectionConfiguration -CollectionName $CollectionName -UserGroup ($CurrentCollectionGroups + $Group)

рдПрдХрд▓ рд╕рд░реНрднрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ рд╕рдореВрд╣ рдиреАрддрд┐, рд╕рд░реНрднрд░рд╣рд░реВрдорд╛ рд▓рд╛рдЧреВ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдБрджреИред рдкрд░реНрдЦрди рдзреЗрд░реИ рдЕрд▓реНрдЫреА рднрдПрдХрд╛рд╣рд░реВрд▓реЗ рд░рд╛рдореНрд░реЛ рдкреБрд░рд╛рдиреЛ gpupdate рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдЧрддрд┐ рджрд┐рди рд╕рдХреНрдЫрдиреН, рдЕрдзрд┐рдорд╛рдирддрдГ рдХреЗрдиреНрджреНрд░реАрдп рд░реВрдкрдорд╛.

4 рдХрджрдо

"рдкреНрд░рдмрдиреНрдзрдХрд╣рд░реВ" рдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рдореНрди PS рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдпрд╛рд░ рдЧрд░реМрдВ:

RDSManagement.ps1

$Servers = @(
    "RDSHost01",
    "RDSHost02",
    "RDSHost03"
)

function Invoke-RDPSessionLogoff {
    Param(
        [parameter(Mandatory=$True, Position=0)][String]$ComputerName,
        [parameter(Mandatory=$true, Position=1)][String]$SessionID
    )
    $ErrorActionPreference = "Stop"
    logoff $SessionID /server:$ComputerName /v 2>&1
}

function Invoke-RDPShadowSession {
    Param(
        [parameter(Mandatory=$True, Position=0)][String]$ComputerName,
        [parameter(Mandatory=$true, Position=1)][String]$SessionID
    )
    $ErrorActionPreference = "Stop"
    mstsc /shadow:$SessionID /v:$ComputerName /control 2>&1
}

Function Get-LoggedOnUser {
    Param(
        [parameter(Mandatory=$True, Position=0)][String]$ComputerName="localhost"
    )
    $ErrorActionPreference = "Stop"
    Test-Connection $ComputerName -Count 1 | Out-Null
    quser /server:$ComputerName 2>&1 | Select-Object -Skip 1 | ForEach-Object {
        $CurrentLine = $_.Trim() -Replace "s+"," " -Split "s"
        $HashProps = @{
            UserName = $CurrentLine[0]
            ComputerName = $ComputerName
        }
        If ($CurrentLine[2] -eq "Disc") {
            $HashProps.SessionName = $null
            $HashProps.Id = $CurrentLine[1]
            $HashProps.State = $CurrentLine[2]
            $HashProps.IdleTime = $CurrentLine[3]
            $HashProps.LogonTime = $CurrentLine[4..6] -join " "
            $HashProps.LogonTime = $CurrentLine[4..($CurrentLine.GetUpperBound(0))] -join " "
        }
        else {
            $HashProps.SessionName = $CurrentLine[1]
            $HashProps.Id = $CurrentLine[2]
            $HashProps.State = $CurrentLine[3]
            $HashProps.IdleTime = $CurrentLine[4]
            $HashProps.LogonTime = $CurrentLine[5..($CurrentLine.GetUpperBound(0))] -join " "
        }
        New-Object -TypeName PSCustomObject -Property $HashProps |
        Select-Object -Property UserName, ComputerName, SessionName, Id, State, IdleTime, LogonTime
    }
}

$UserLogin = Read-Host -Prompt "╨Т╨▓╨╡╨┤╨╕╤В╨╡ ╨╗╨╛╨│╨╕╨╜ ╨┐╨╛╨╗╤М╨╖╨╛╨▓╨░╤В╨╡╨╗╤П"
Write-Host "╨Я╨╛╨╕╤Б╨║ RDP-╤Б╨╡╤Б╤Б╨╕╨╣ ╨┐╨╛╨╗╤М╨╖╨╛╨▓╨░╤В╨╡╨╗╤П ╨╜╨░ ╤Б╨╡╤А╨▓╨╡╤А╨░╤Е..."
$SessionList = @()
ForEach ($Server in $Servers) {
    $TargetSession = $null
    Write-Host "  ╨Ю╨┐╤А╨╛╤Б ╤Б╨╡╤А╨▓╨╡╤А╨░ $Server"
    Try {
        $TargetSession = Get-LoggedOnUser -ComputerName $Server | Where-Object {$_.UserName -eq $UserLogin}
    }
    Catch {
        Write-Host "╨Ю╤И╨╕╨▒╨║╨░: " $Error[0].Exception.Message -ForegroundColor Red
        Continue
    }
    If ($TargetSession) {
        Write-Host "    ╨Э╨░╨╣╨┤╨╡╨╜╨░ ╤Б╨╡╤Б╤Б╨╕╤П ╤Б ID $($TargetSession.ID) ╨╜╨░ ╤Б╨╡╤А╨▓╨╡╤А╨╡ $Server" -ForegroundColor Yellow
        Write-Host "    ╨з╤В╨╛ ╨▒╤Г╨┤╨╡╨╝ ╨┤╨╡╨╗╨░╤В╤М?"
        Write-Host "      1 - ╨┐╨╛╨┤╨║╨╗╤О╤З╨╕╤В╤М╤Б╤П ╨║ ╤Б╨╡╤Б╤Б╨╕╨╕"
        Write-Host "      2 - ╨╖╨░╨▓╨╡╤А╤И╨╕╤В╤М ╤Б╨╡╤Б╤Б╨╕╤О"
        Write-Host "      0 - ╨╜╨╕╤З╨╡╨│╨╛"
        $Action = Read-Host -Prompt "╨Т╨▓╨╡╨┤╨╕╤В╨╡ ╨┤╨╡╨╣╤Б╤В╨▓╨╕╨╡"
        If ($Action -eq "1") {
            Invoke-RDPShadowSession -ComputerName $Server -SessionID $TargetSession.ID
        }
        ElseIf ($Action -eq "2") {
            Invoke-RDPSessionLogoff -ComputerName $Server -SessionID $TargetSession.ID
        }
        Break
    }
    Else {
        Write-Host "    ╤Б╨╡╤Б╤Б╨╕╨╣ ╨╜╨╡ ╨╜╨░╨╣╨┤╨╡╨╜╨╛"
    }
}

PS рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА PS рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрд╕реНрддреИ рд╕рдорд╛рди рдирд╛рдордХреЛ cmd рдлрд╛рдЗрд▓рдХреЛ рд░реВрдкрдорд╛ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рд╢реЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫреМрдВ:

RDSManagement.cmd

@ECHO OFF
powershell -NoLogo -ExecutionPolicy Bypass -File "%~d0%~p0%~n0.ps1" %*

рд╣рд╛рдореАрд▓реЗ рджреБрдмреИ рдлрд╛рдЗрд▓рд╣рд░реВрд▓рд╛рдИ "рдкреНрд░рдмрдиреНрдзрдХрд╣рд░реВ" рд▓рд╛рдИ рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рдлреЛрд▓реНрдбрд░рдорд╛ рд░рд╛рдЦреНрдЫреМрдВ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкреБрди: рд▓рдЧрдЗрди рдЧрд░реНрди рд╕реЛрдзреНрдЫреМрдВред рдЕрдм, cmd рдлрд╛рдЗрд▓ рдЪрд▓рд╛рдПрд░, рддрд┐рдиреАрд╣рд░реВрд▓реЗ RDS рдЫрд╛рдпрд╛ рдореЛрдбрдорд╛ рдЕрдиреНрдп рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рд╕рддреНрд░рд╣рд░реВрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫрдиреН рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд▓рдЧ рдЖрдЙрдЯ рдЧрд░реНрди рдмрд╛рдзреНрдп рдкрд╛рд░реНрдиреЗрдЫрдиреН (рдпреЛ рдЙрдкрдпреЛрдЧреА рд╣реБрди рд╕рдХреНрдЫ рдЬрдм рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рд╕реНрд╡рддрдиреНрддреНрд░ рд░реВрдкрдорд╛ "рд╣реНрдпрд╛рдЩрд┐рдЩ" рд╕рддреНрд░ рд╕рдорд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрджреИрди)ред

рдпреЛ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

"рдкреНрд░рдмрдиреНрдзрдХ" рдХреЛ рд▓рд╛рдЧреАRDP рд╕рддреНрд░рд╣рд░реВрдХреЛ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди

рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐RDP рд╕рддреНрд░рд╣рд░реВрдХреЛ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрд┐рдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди

рдХреЗрд╣рд┐ рдЕрдиреНрддрд┐рдо рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВ

рд╕реВрдХреНрд╖реНрдорддрд╛ 1ред рдпрджрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░ рдЬрд╕рдорд╛ рд╣рд╛рдореАрд▓реЗ рдирд┐рдпрдиреНрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВ Set-RDSPermissions.ps1 рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд░реНрднрд░рдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрдиреБ рдЕрдШрд┐ рд╕реБрд░реБ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рддрдм "рдкреНрд░рдмрдиреНрдзрдХ" рд▓реЗ рдкрд╣реБрдБрдЪ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫред рдпрд╣рд╛рдБ рд╕рдорд╛рдзрд╛рди рд╕реНрдкрд╖реНрдЯ рдЫ: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд▓рдЧ рдЗрди рдирднрдПрд╕рдореНрдо рдкрд░реНрдЦрдиреБрд╣реЛрд╕реНред

рд╕реВрдХреНрд╖реНрдорддрд╛ 2ред RDP рдЫрд╛рдпрд╛рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реЗрдХреЛ рдзреЗрд░реИ рджрд┐рди рдкрдЫрд┐, рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рд░реЛрдЪрдХ рдмрдЧ рд╡рд╛ рд╕реБрд╡рд┐рдзрд╛ рджреЗрдЦреНрдпреМрдВ: рдЫрд╛рдпрд╛ рд╕рддреНрд░рдХреЛ рдЕрдиреНрддреНрдп рдкрдЫрд┐, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЬрдбрд╛рди рднрдПрдХреЛ рдЯреНрд░реЗрдорд╛ рднрд╛рд╖рд╛ рдкрдЯреНрдЯреА рдЧрд╛рдпрдм рд╣реБрдиреНрдЫ, рд░ рдпрд╕рд▓рд╛рдИ рдлрд┐рд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред -рд▓рдЧ - рдЗрдиред рдпреЛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ, рд╣рд╛рдореА рдПрдХреНрд▓реИ рдЫреИрдиреМрдВ: рдкрдЯрдХ, ╨┤╨▓╨░, рддреАрди.

рдпрддрд┐ рдиреИред рдо рддрдкрд╛рдИ рд░ рддрдкрд╛рдИрдХрд╛ рд╕рд░реНрднрд░рд╣рд░реВрдХреЛ рд╕реБрд╕реНрд╡рд╛рд╕реНрдереНрдпрдХреЛ рдХрд╛рдордирд╛ рдЧрд░реНрджрдЫреБред рд╕рдзреИрдВ рдЬрд╕реНрддреИ, рдо рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВрдорд╛ рддрдкрд╛рдИрдВрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рддрддреНрдкрд░ рдЫреБ рд░ рддрдкрд╛рдИрдВрд▓рд╛рдИ рддрд▓рдХреЛ рдЫреЛрдЯреЛ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рд▓рд┐рди рдЖрдЧреНрд░рд╣ рдЧрд░реНрджрдЫреБред

рд╕реНрд░реЛрддрд╣рд░реВ

рджрд░реНрддрд╛ рднрдПрдХрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорд╛рддреНрд░ рд╕рд░реНрд╡реЗрдХреНрд╖рдгрдорд╛ рднрд╛рдЧ рд▓рд┐рди рд╕рдХреНрдЫрдиреНред рд╕рд╛рдЗрди рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реНрдХреГрдкрдпрд╛

рддрдкрд╛рдИрдВ рдХреЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ?

  • 8,1%AMMYY Admin5

  • 17,7%AnyDesk11

  • 9,7%DameWare6

  • 24,2%Radmin15

  • 14,5%RDS рдЫрд╛рдпрд╛9

  • 1,6%рджреНрд░реБрдд рд╕рд╣рд╛рдпрддрд╛ / рд╡рд┐рдиреНрдбреЛрдЬ рд░рд┐рдореЛрдЯ рд╕рд╣рд╛рдпрддрд╛ рез

  • 38,7%TeamViewer24

  • 32,3%VNC20

  • 32,3%рдЕрдиреНрдп рек

  • 3,2%рд▓рд╛рдЗрдЯ рдкреНрд░рдмрдиреНрдзрдХ реи

62 рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорддрджрд╛рди рдЧрд░реЗред реи рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рд░реЛрдХрд┐рдПред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди