рдореИрд▓реЗ рдХрд╛рдо рдЧрд░реЗрдХреЛ рд╕рдВрд╕реНрдерд╛рдорд╛ рд░рд┐рдореЛрдЯ рдХрд╛рдо рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛ рдирд┐рд╖реЗрдз рдЧрд░рд┐рдПрдХреЛ рдЫред рдерд┐рдпреЛред рдЧрдд рд╣рдкреНрддрд╛ рд╕рдореНрдоред рдЕрдм рд╣рд╛рдореАрд▓реЗ рддреБрд░реБрдиреНрддреИ рд╕рдорд╛рдзрд╛рдирдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреБрдкрд░реНтАНрдпреЛред рд╡реНрдпрд╡рд╕рд╛рдпрдмрд╛рдЯ - рдирдпрд╛рдБ рдХрд╛рд░реНрдп рдврд╛рдБрдЪрд╛рдорд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрджреИ, рд╣рд╛рдореАрдмрд╛рдЯ - 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)
рдПрдХрд▓ рд╕рд░реНрднрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ
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 рдЫрд╛рдпрд╛ рдореЛрдбрдорд╛ рдЕрдиреНрдп рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рд╕рддреНрд░рд╣рд░реВрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫрдиреН рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд▓рдЧ рдЖрдЙрдЯ рдЧрд░реНрди рдмрд╛рдзреНрдп рдкрд╛рд░реНрдиреЗрдЫрдиреН (рдпреЛ рдЙрдкрдпреЛрдЧреА рд╣реБрди рд╕рдХреНрдЫ рдЬрдм рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рд╕реНрд╡рддрдиреНрддреНрд░ рд░реВрдкрдорд╛ "рд╣реНрдпрд╛рдЩрд┐рдЩ" рд╕рддреНрд░ рд╕рдорд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрджреИрди)ред
рдпреЛ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:
"рдкреНрд░рдмрдиреНрдзрдХ" рдХреЛ рд▓рд╛рдЧреА
рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐
рдХреЗрд╣рд┐ рдЕрдиреНрддрд┐рдо рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВ
рд╕реВрдХреНрд╖реНрдорддрд╛ 1ред рдпрджрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░ рдЬрд╕рдорд╛ рд╣рд╛рдореАрд▓реЗ рдирд┐рдпрдиреНрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВ Set-RDSPermissions.ps1 рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд░реНрднрд░рдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрдиреБ рдЕрдШрд┐ рд╕реБрд░реБ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рддрдм "рдкреНрд░рдмрдиреНрдзрдХ" рд▓реЗ рдкрд╣реБрдБрдЪ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫред рдпрд╣рд╛рдБ рд╕рдорд╛рдзрд╛рди рд╕реНрдкрд╖реНрдЯ рдЫ: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд▓рдЧ рдЗрди рдирднрдПрд╕рдореНрдо рдкрд░реНрдЦрдиреБрд╣реЛрд╕реНред
рд╕реВрдХреНрд╖реНрдорддрд╛ 2ред RDP рдЫрд╛рдпрд╛рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реЗрдХреЛ рдзреЗрд░реИ рджрд┐рди рдкрдЫрд┐, рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рд░реЛрдЪрдХ рдмрдЧ рд╡рд╛ рд╕реБрд╡рд┐рдзрд╛ рджреЗрдЦреНрдпреМрдВ: рдЫрд╛рдпрд╛ рд╕рддреНрд░рдХреЛ рдЕрдиреНрддреНрдп рдкрдЫрд┐, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЬрдбрд╛рди рднрдПрдХреЛ рдЯреНрд░реЗрдорд╛ рднрд╛рд╖рд╛ рдкрдЯреНрдЯреА рдЧрд╛рдпрдм рд╣реБрдиреНрдЫ, рд░ рдпрд╕рд▓рд╛рдИ рдлрд┐рд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред -рд▓рдЧ - рдЗрдиред рдпреЛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ, рд╣рд╛рдореА рдПрдХреНрд▓реИ рдЫреИрдиреМрдВ:
рдпрддрд┐ рдиреИред рдо рддрдкрд╛рдИ рд░ рддрдкрд╛рдИрдХрд╛ рд╕рд░реНрднрд░рд╣рд░реВрдХреЛ рд╕реБрд╕реНрд╡рд╛рд╕реНрдереНрдпрдХреЛ рдХрд╛рдордирд╛ рдЧрд░реНрджрдЫреБред рд╕рдзреИрдВ рдЬрд╕реНрддреИ, рдо рдЯрд┐рдкреНрдкрдгреАрд╣рд░реВрдорд╛ рддрдкрд╛рдИрдВрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рддрддреНрдкрд░ рдЫреБ рд░ рддрдкрд╛рдИрдВрд▓рд╛рдИ рддрд▓рдХреЛ рдЫреЛрдЯреЛ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рд▓рд┐рди рдЖрдЧреНрд░рд╣ рдЧрд░реНрджрдЫреБред
рд╕реНрд░реЛрддрд╣рд░реВ
RDS рдЫрд╛рдпрд╛ - Windows Server 2016 / 2012 R2 рдорд╛ RDP рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░рд╣рд░реВрдорд╛ рдЫрд╛рдпрд╛ рдЬрдбрд╛рди Windows Server 2012 Shadowing - рдЧреИрд░-рдкреНрд░рд╢рд╛рд╕рдХрд╣рд░реВрд▓рд╛рдИ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рддреНрдпрд╛рдпреЛрдЬрди рдЧрд░реНрджреИ Get-LoggedOnUser рд▓реЗ рд░рд┐рдореЛрдЯ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рд▓рдЧрдЗрди рдЧрд░рд┐рдПрдХрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдЬрд╛рдирдХрд╛рд░реА рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджрдЫ PowerShell PS1 рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╣рд░реВ рдХрд╕рд░реА рд╕реБрд░реБ рдЧрд░реНрдиреЗ рдЙрддреНрддрдо рддрд░рд┐рдХрд╛ рд╕реНрдерд╛рдиреАрдп рд╕реБрд░рдХреНрд╖рд╛ рд╕рдореВрд╣рдорд╛ рдбреЛрдореЗрди рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВ рдердкреНрджреИ GPMC - OU рдорд╛ рд╕рдмреИ рдХрдореНрдкреНрдпреБрдЯрд░рд╣рд░реВрдорд╛ рдмрд▓рд┐рдпреЛ gpupdate
рджрд░реНрддрд╛ рднрдПрдХрд╛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдорд╛рддреНрд░ рд╕рд░реНрд╡реЗрдХреНрд╖рдгрдорд╛ рднрд╛рдЧ рд▓рд┐рди рд╕рдХреНрдЫрдиреНред
рддрдкрд╛рдИрдВ рдХреЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ?
-
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