通過PowerShell修改遠(yuǎn)程桌面(Remote Desktop)端口的腳本,不復(fù)雜,啟動(dòng)腳本后有兩個(gè)選項(xiàng):1.自定義遠(yuǎn)程桌面;2.回復(fù)遠(yuǎn)程桌面的默認(rèn)端口3389 發(fā)出來(lái)給有用的兄弟。
由于這里向防火墻增加和刪除例外是使用Windows8和Windows2012內(nèi)置的Cmdlet: New-NetFirewallRule和Remove-NetFirewallRule。所以本腳本當(dāng)前僅適用于Windows8和Windows2012以上版本的Windows操作系統(tǒng),使用時(shí)請(qǐng)注意適用的范圍。如果想兼容其他版本的windows系統(tǒng),請(qǐng)將對(duì)應(yīng)的cmdlet替換為netsh命令,具體的使用方法請(qǐng)參見以下幫助文檔http://technet.microsoft.com/library/hh831755.aspx
在修改RDP端口的過程中,首先修改注冊(cè)表“HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp”下“PortNumber”的鍵值為指定的端口,接下來(lái)重啟Remote Desktop Services服務(wù),并將該端口對(duì)應(yīng)的防火墻入站請(qǐng)求添加到防火墻例外中。
在恢復(fù)默認(rèn)RDP端口的過程中,首先將之前添加的防火墻例外清理掉,然后將注冊(cè)表中對(duì)應(yīng)鍵值的端口改回3389,最后重啟Remote Desktop Services服務(wù)。
需要強(qiáng)調(diào)的是重啟遠(yuǎn)程桌面服務(wù)的過程中遠(yuǎn)程桌面將會(huì)短時(shí)間中斷,需要重新連接,并將該端口對(duì)應(yīng)的防火墻入站請(qǐng)求添加到防火墻例外中,此處添加的僅僅是操作系統(tǒng)層面的防火墻例外,如果讀者使用的是類似Windows Azure之類的虛擬化方案一定要對(duì)應(yīng)的增加外部防火墻的例外,否則修改后的RDP端口將會(huì)無(wú)法從外部連接。
廢話不多說,上代碼:
Clear
Write-Host
Write-Host 1、自定義遠(yuǎn)程桌面端口 -ForegroundColor 10
Write-Host 2、恢復(fù)系統(tǒng)默認(rèn)的遠(yuǎn)程桌面端口 -ForegroundColor 11
Write-Host
Write-Host
Write-Host "請(qǐng)從上面的列表選擇一個(gè)選項(xiàng)...[1-2]“
$opt=Read-Host
Switch ($opt)
{
1 {
Write-Host
Write-Host 修改遠(yuǎn)程桌面(Remote Desktop)的默認(rèn)端口... -ForegroundColor Red
Write-Host
Write-Host 下來(lái)將會(huì)提示輸入要指定的端口號(hào),請(qǐng)參考端口范圍輸入一個(gè)指定的端口號(hào)(范圍:1024~65535)
Write-Host 該腳本修改注冊(cè)表“HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp”下“PortNumber”的鍵值。
Write-Host
# 輸入指定的端口號(hào)并修改RDP默認(rèn)端口
$PortNumber=Read-Host "現(xiàn)在請(qǐng)輸入要指定的端口號(hào)(范圍:1024~65535)"
$original=Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name 'portnumber'
Write-Host 當(dāng)前RDP默認(rèn)端口為$original.PortNumber
$result=Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name 'portnumber' -Value $PortNumber
if($result.PrimaryStatus -eq 'OK')
{
Write-Host 已經(jīng)完成 RDP 端口的修改! -ForegroundColor Green
}
else
{
Write-Host 修改RDP 端口失! -ForegroundColor Red
}
#重啟遠(yuǎn)程桌面服務(wù)
Write-Host 正在重啟 Remote Desktop Services ... -ForegroundColor DarkYellow
Restart-Service termservice -Force
#允許自定義端口通過防火墻
Write-Host 添加防火墻策略,允許現(xiàn)有 RDP 端口 $PortNumber 入站。
$result=New-NetFirewallRule -DisplayName "Allow Custom RDP PortNumber" -Direction Inbound -Protocol TCP -LocalPort $PortNumber -Action Allow
if($result.PrimaryStatus -eq 'OK')
{
Write-Host 已經(jīng)完成 RDP 端口對(duì)應(yīng)防火墻策略的添加! -ForegroundColor Green
}
else
{
Write-Host 添加RDP 端口對(duì)應(yīng)防火墻策略失。 -ForegroundColor Red
}
Write-Host
Write-Host 完成 RDP 端口修改!
}
2 {
Write-Host
Write-Host 正在恢復(fù)系統(tǒng)默認(rèn)端口...
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name 'portnumber' -Value 3389
Write-Host 正在重啟 Remote Desktop Services...
Restart-Service termservice -Force
Write-Host 正在刪除防火墻設(shè)置...
Remove-NetFirewallRule -DisplayName "Allow Custom RDP PortNumber"
write-host 完成恢復(fù)!
}
}
修改RDP端口的執(zhí)行效果如下所示:
恢復(fù)RDP默認(rèn)端口的執(zhí)行效果如下圖所示:
Read more: PowerShell自定義修改遠(yuǎn)程桌面RDP端口.