По умолчанию, #RDP использует порт TCP 3389
, но по каким-либо обстоятельствам приходится его менять. Рассмотрим два способа изменения порта RDP.
Для изменения порта #RDP, нужно отредактировать реестр:
- Открыть редактор реестра
regedit.exe
. - Пройти по пути
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
. - Найти параметр
PortNumber
. - Ввести новый номер порта (decimal).
- Перезагрузить компьютер.
Если включён брандмауэр, необходимо в нём разрешить подключение через новый порт #RDP.
Весь процесс можно автоматизировать при помощи скрипта.
Скрипт имеет один единственный параметр, это номер порта.
-P
-P_Port
- номер порта #RDP.
Запускается скрипт обычным способом. В параметре -P
указывается новый номер порта #RDP.
1
| .\pwsh.rdp.port.ps1 -P 50102
|
- Проверяется в реестре корректность пути и изменяется номер порта #RDP. Если путь не найден, то скрипт аварийно завершает работу без дальнейших изменений.
- В брандмауэр вносится два правила, которые разрешают подключение к новому порту #RDP.
- Если служба
TermService
(служба удаленных рабочих столов) запущена, она перезапускается, применяя новые параметры порта #RDP.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
| <#PSScriptInfo
.VERSION 0.1.0
.GUID 5d2bddd9-4eed-42f0-a0ba-7d30efcb81e2
.AUTHOR Kai Kimera
.AUTHOREMAIL mail@kai.kim
.COMPANYNAME Library Online
.COPYRIGHT 2023 Library Online. All rights reserved.
.LICENSEURI https://choosealicense.com/licenses/mit/
.PROJECTURI https://lib.onl/ru/2023/10/616da78a-eb16-575a-9119-65f0c0c7baee/
#>
#Requires -Version 7.2
#Requires -RunAsAdministrator
<#
.SYNOPSIS
Changing the RDP port number.
.DESCRIPTION
Changing the listening port for Remote Desktop on your computer.
.PARAMETER P_Port
RDP port number.
Default: 3389.
.EXAMPLE
.\pwsh.rdp.port.ps1 -P 50102
.LINK
https://lib.onl/ru/2023/10/616da78a-eb16-575a-9119-65f0c0c7baee/
#>
# -------------------------------------------------------------------------------------------------------------------- #
# CONFIGURATION
# -------------------------------------------------------------------------------------------------------------------- #
param(
[Parameter(HelpMessage="RDP port number.")]
[ValidatePattern('^[0-9]+$')]
[Alias('P')][int]$P_Port = 3389
)
# -------------------------------------------------------------------------------------------------------------------- #
# INITIALIZATION
# -------------------------------------------------------------------------------------------------------------------- #
function Start-Script() {
Start-RdpRegistry
Start-RdpFirewall
Start-RdpService
}
# -------------------------------------------------------------------------------------------------------------------- #
# EDITING THE REGISTRY
# -------------------------------------------------------------------------------------------------------------------- #
function Start-RdpRegistry() {
$Path = 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp'
$Param = @{
LiteralPath = "${Path}"
Name = 'PortNumber'
Value = $P_Port
}
if (Test-Path -LiteralPath "${Path}") {
Set-ItemProperty @Param
} else {
Write-Error -Message "'${Path}' not found!" -ErrorAction 'Stop'
}
}
# -------------------------------------------------------------------------------------------------------------------- #
# EDITING THE FIREWALL
# -------------------------------------------------------------------------------------------------------------------- #
function Start-RdpFirewall() {
$TCP = @{
DisplayName = 'Custom RDP Port (TCP-In)'
Profile = 'Public'
Direction = Inbound
Action = Allow
Protocol = TCP
LocalPort = $P_Port
}
$UDP = @{
DisplayName = 'Custom RDP Port (UDP-In)'
Profile = 'Public'
Direction = Inbound
Action = Allow
Protocol = UDP
LocalPort = $P_Port
}
New-NetFirewallRule @TCP
New-NetFirewallRule @UDP
}
# -------------------------------------------------------------------------------------------------------------------- #
# RESTARTING THE REMOTE DESKTOP SERVICES
# -------------------------------------------------------------------------------------------------------------------- #
function Start-RdpService() {
$Name = 'TermService'
$Param = @{
Name = "${Name}"
Force = $true
}
if ((Get-Service -Name "${Name}").Status -eq 'Running') {
Restart-Service @Param
} else {
Write-Host "Service '${Name}' not running!"
}
}
# -------------------------------------------------------------------------------------------------------------------- #
# -------------------------------------------------< RUNNING SCRIPT >------------------------------------------------- #
# -------------------------------------------------------------------------------------------------------------------- #
Start-Script
|