เชนเซเช เชเซ เชธเชเชธเซเชฅเชพเชฎเชพเช เชเชพเชฎ เชเชฐเซเช เชเซเช เชคเซเชฏเชพเช เชฐเชฟเชฎเซเช เชตเชฐเซเช เชธเซเชฆเซเชงเชพเชเชคเชฟเช เชฐเซเชคเซ เชชเซเชฐเชคเชฟเชฌเชเชงเชฟเชค เชเซ. เชนเชคเซ. เชเชฏเชพ เชธเชชเซเชคเชพเชน เชธเซเชงเซ. เชนเชตเซ เช
เชฎเชพเชฐเซ เชคเชพเชเซเชฆเซ เชเชเซเชฒ เชฒเชพเชตเชตเชพเชจเซ เชนเชคเซ. เชตเซเชฏเชตเชธเชพเชฏเชฅเซ - เชจเชตเชพ เชเชพเชฐเซเชฏ เชซเซเชฐเซเชฎเซเชเชฎเชพเช เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชเชจเซ เช
เชจเซเชเซเชฒเชฟเชค เชเชฐเชตเชพ, เช
เชฎเชพเชฐเชพ เชคเชฐเชซเชฅเซ - PIN เชเซเชก เช
เชจเซ เชเซเชเชจเซเชธ เชธเชพเชฅเซ PKI, VPN, เชตเชฟเชเชคเชตเชพเชฐ เชฒเซเชเชฟเชเช เช
เชจเซ เชเชฃเซเช เชฌเชงเซเช.
เช
เชจเซเชฏ เชตเชธเซเชคเซเชเชจเซ เชธเชพเชฅเซ, เชนเซเช เชฐเชฟเชฎเซเช เชกเซเชธเซเชเชเซเชช เชเชจเซเชซเซเชฐเชพเชธเซเชเซเชฐเชเซเชเชฐ เชเชฐเซเชซ เชเชฐเซเชฎเชฟเชจเชฒ เชธเซเชตเชพเช เชธเซเช เชเชฐเซ เชฐเชนเซเชฏเซ เชนเชคเซ. เช
เชฎเชพเชฐเซ เชชเชพเชธเซ เชตเชฟเชตเชฟเชง เชกเซเชเชพ เชธเซเชจเซเชเชฐเซเชฎเชพเช เช
เชจเซเช RDS เชกเชฟเชชเซเชฒเซเชฏเชฎเซเชจเซเช เชเซ. เชเช เชงเซเชฏเซเชฏ เชธเชเชฌเชเชงเชฟเชค IT เชตเชฟเชญเชพเชเซเชจเชพ เชธเชนเชเชพเชฐเซเชฏเชเชฐเซเชจเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชธเชคเซเชฐเซ เชธเชพเชฅเซ เชเชจเซเชเชฐเซเชเซเชเชฟเชต เชฐเซเชคเซ เชเชจเซเชเซเช เชฅเชตเชพ เชธเชเซเชทเชฎ เชฌเชจเชพเชตเชตเชพเชจเซ เชนเชคเซ. เชเซเชฎ เชคเชฎเซ เชเชพเชฃเซ เชเซ, เช เชฎเชพเชเซ เชชเซเชฐเชฎเชพเชฃเชญเซเชค 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 เชธเชฐเซเชตเชฐ เชชเชฐ เชเชฐเซเชฎเชฟเชจเชฒ เชธเชคเซเชฐเซเชจเซเช เชธเชเชเชพเชฒเชจ เชเชฐเชตเชพเชจเชพ เช เชงเชฟเชเชพเชฐเซ เชเชชเซเช:
เชธเซเช-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 เชถเซเชกเซ - เชตเชฟเชจเซเชกเซเช เชธเชฐเซเชตเชฐ 2016 / 2012 R2 เชฎเชพเช RDP เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพ เชธเชคเซเชฐเซ เชธเชพเชฅเซ เชถเซเชกเซ เชเชจเซเชเซเชถเชจ เชตเชฟเชจเซเชกเซเช เชธเชฐเซเชตเชฐ 2012 เชถเซเชกเซเชเชเช - เชจเซเชจ-เชเชกเชฎเชฟเชจเซเชธเชจเซ เช เชงเชฟเชเชพเชฐเซ เชธเซเชเชชเชตเชพ Get-LoggedOnUser เชฐเซเชฎเซเช เชธเชฟเชธเซเชเชฎ เชชเชฐ เชฒเซเช-เชเชจ เชฅเชฏเซเชฒ เชฏเซเชเชฐเซเชธเชจเซ เชฎเชพเชนเชฟเชคเซ เชเชเชคเซเชฐ เชเชฐเซ เชเซ เชชเชพเชตเชฐเชถเซเชฒ PS1 เชธเซเชเซเชฐเชฟเชชเซเชเซเชธ เชเซเชตเซ เชฐเซเชคเซ เชถเชฐเซ เชเชฐเชตเซ เชคเซ เชถเซเชฐเซเชทเซเช เชฐเซเชค เชเซ เชธเซเชฅเชพเชจเชฟเช เชธเซเชฐเชเซเชทเชพ เชเซเชฅเชฎเชพเช เชกเซเชฎเซเชจ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชเชจเซ เชเชฎเซเชฐเชตเซเช GPMC - OU เชฎเชพเช เชคเชฎเชพเชฎ เชเชฎเซเชชเซเชฏเซเชเชฐเซเชธ เชชเชฐ gpupdate เชซเชฐเชเชฟเชฏเชพเชค เชเชฐเซ
เชซเชเซเชค เชจเซเชเชงเชพเชฏเซเชฒเชพ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช เช เชธเชฐเซเชตเซเชฎเชพเช เชญเชพเช เชฒเช เชถเชเซ เชเซ.
เชคเชฎเซ เชถเซเช เชเชชเชฏเซเช เชเชฐเซ เชเซ?
-
8,1%AMMYY เชเชกเชฎเชฟเชจ5
-
17,7%เชเซเชเชชเชฃ เชกเซเชธเซเช11
-
9,7%เชกเซเชฎเชตเซเชฐ6
-
24,2%เชฐเซเชกเชฎเซเชจ15
-
14,5%RDS เชถเซเชกเซ9
-
1,6%เชเซเชตเชฟเช เช เชธเชฟเชธเซเช / เชตเชฟเชจเซเชกเซเช เชฐเซเชฎเซเช เชเชธเชฟเชธเซเชเชจเซเชธ1
-
38,7%เชเซเชฎเชตเซเชฏเซเช เชฐ24
-
32,3%VNC20
-
32,3%เช เชจเซเชฏ20
-
3,2%เชฒเชพเชเช เชฎเซเชจเซเชเชฐ2
62 เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชเช เชฎเชค โโเชเชชเซเชฏเซ. 22 เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช เชฆเซเชฐ เชฐเชนเซเชฏเชพ.
เชธเซเชฐเซเชธ: www.habr.com