Ændre port nummer til fjernskrivebord win10, win11 RDP

Å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")