
Åben PowerShell som administrator og indsæt nedenstående kode. Koden sørger for at fjernskrivebord bliver “slået til”. Er test på windows10 og windows 11
husk at enable fjernskrivebord manuelt.

param(
[int]$Port = $(Read-Host -Prompt "Angiv ny RDP-port (1-65535)")
)
# --- Sikkerhed og validering ---
# Kræv administrator
$principal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
if (-not $principal.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)) {
Write-Error "Kør PowerShell som administrator."
exit 1
}
# Tjek port
if ($Port -lt 1 -or $Port -gt 65535) {
Write-Error "Ugyldig port: $Port. Vælg et tal mellem 1 og 65535."
exit 1
}
# --- Registry: sæt port + aktiver RDP ---
$rdpTcpKey = "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp"
Set-ItemProperty -Path $rdpTcpKey -Name "PortNumber" -Type DWord -Value $Port
# Aktiver Remote Desktop (tillad indgående forbindelser)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name "fDenyTSConnections" -Type DWord -Value 0
# --- Firewall: deaktivér standardregler og lav/vedligehold egne ---
# Brug ikke lokaliserede DisplayName; brug interne Name-værdier, men håndtér hvis de ikke findes.
$stdTcp = "RemoteDesktop-UserMode-In-TCP"
$stdUdp = "RemoteDesktop-UserMode-In-UDP"
Get-NetFirewallRule -Name $stdTcp -ErrorAction SilentlyContinue | Set-NetFirewallRule -Enabled False
Get-NetFirewallRule -Name $stdUdp -ErrorAction SilentlyContinue | Set-NetFirewallRule -Enabled False
# Idempotente brugerdefinerede regler
$tcpDisplay = "RDP Custom TCP ($Port)"
$udpDisplay = "RDP Custom UDP ($Port)" # Se note om UDP nedenfor
# TCP
$tcpRule = Get-NetFirewallRule -DisplayName $tcpDisplay -ErrorAction SilentlyContinue
if ($null -eq $tcpRule) {
New-NetFirewallRule -DisplayName $tcpDisplay `
-Direction Inbound -Action Allow -Enabled True -Profile Any `
-Group "Custom Rules" -Description "Tillad RDP over TCP på port $Port." `
-Protocol TCP -LocalPort $Port
} else {
Set-NetFirewallRule -DisplayName $tcpDisplay -Enabled True -Profile Any -Direction Inbound -Action Allow
Set-NetFirewallRule -DisplayName $tcpDisplay -NewDisplayName $tcpDisplay | Out-Null
Set-NetFirewallRule -DisplayName $tcpDisplay -Protocol TCP
Set-NetFirewallRule -DisplayName $tcpDisplay -LocalPort $Port
}
# (Valgfrit) UDP – RDP UDP-transport bruger typisk 3389 og følger ikke altid en custom TCP-port.
# Fjern kommentaren nedenfor KUN hvis du bevidst har konfigureret RDP til at bruge en anden UDP-port.
<#
$udpRule = Get-NetFirewallRule -DisplayName $udpDisplay -ErrorAction SilentlyContinue
if ($null -eq $udpRule) {
New-NetFirewallRule -DisplayName $udpDisplay `
-Direction Inbound -Action Allow -Enabled True -Profile Any `
-Group "Custom Rules" -Description "Tillad RDP over UDP på port $Port." `
-Protocol UDP -LocalPort $Port
} else {
Set-NetFirewallRule -DisplayName $udpDisplay -Enabled True -Profile Any -Direction Inbound -Action Allow
Set-NetFirewallRule -DisplayName $udpDisplay -Protocol UDP
Set-NetFirewallRule -DisplayName $udpDisplay -LocalPort $Port
}
#>
# --- Service-restart (kræves for at portskift slår igennem) ---
# Bemærk: Du skrev tidligere, at du vil undgå genstart af TermService. Lad linjen være kommenteret, hvis du ikke vil genstarte nu.
# Restart-Service -Name TermService -Force
# Info til brugeren
Write-Host "RDP er aktiveret. TCP-port sat til $Port."
Write-Host "Hvis du har ændret porten fra 3389, skal tjenesten 'TermService' genstartes eller maskinen genstartes for at ændringen træder i kraft."
[void](Read-Host -Prompt "Ændringer udført. Tryk Enter for at afslutte")


