應朋友的要求寫了一個經過PowerShell修改遠程桌面(Remote Desktop)端口的腳本,不復雜,啓動腳本後有兩個選項:1.自定義遠程桌面;2.回覆遠程桌面的默認端口3389windows
因爲這裏向防火牆增長和刪除例外是使用Windows8和Windows2012內置的Cmdlet: New-NetFirewallRule和Remove-NetFirewallRule。因此本腳本當前僅適用於Windows8和Windows2012以上版本的Windows操做系統,使用時請注意適用的範圍。若是想兼容其餘版本的windows系統,請將對應的cmdlet替換爲netsh命令,具體的使用方法請參見如下幫助文檔http://technet.microsoft.com/library/hh831755.aspxide
在修改RDP端口的過程當中,首先修改註冊表「HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp」下「PortNumber」的鍵值爲指定的端口,接下來重啓Remote Desktop Services服務,並將該端口對應的防火牆入站請求添加到防火牆例外中。網站
在恢復默認RDP端口的過程當中,首先將以前添加的防火牆例外清理掉,而後將註冊表中對應鍵值的端口改回3389,最後重啓Remote Desktop Services服務。操作系統
須要強調的是重啓遠程桌面服務的過程當中遠程桌面將會短期中斷,須要從新鏈接,並將該端口對應的防火牆入站請求添加到防火牆例外中,此處添加的僅僅是操做系統層面的防火牆例外,若是讀者使用的是相似Windows Azure之類的虛擬化方案必定要對應的增長外部防火牆的例外,不然修改後的RDP端口將會沒法從外部鏈接。3d
廢話很少說,上代碼:blog
Clear
Write-Host
Write-Host 一、自定義遠程桌面端口 -ForegroundColor 10
Write-Host 二、恢復系統默認的遠程桌面端口 -ForegroundColor 11
Write-Host
Write-Host
Write-Host "請從上面的列表選擇一個選項...[1-2]「
$opt=Read-Host
Switch ($opt)
{
1 {
Write-Host
Write-Host 修改遠程桌面(Remote Desktop)的默認端口... -ForegroundColor Red
Write-Host
Write-Host 下來將會提示輸入要指定的端口號,請參考端口範圍輸入一個指定的端口號(範圍:1024~65535)
Write-Host 該腳本修改註冊表「HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp」下「PortNumber」的鍵值。
Write-Host
# 輸入指定的端口號並修改RDP默認端口
$PortNumber=Read-Host "如今請輸入要指定的端口號(範圍:1024~65535)"
$original=Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name 'portnumber'
Write-Host 當前RDP默認端口爲$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 已經完成 RDP 端口的修改! -ForegroundColor Green
}
else
{
Write-Host 修改RDP 端口失敗! -ForegroundColor Red
}
#重啓遠程桌面服務
Write-Host 正在重啓 Remote Desktop Services ... -ForegroundColor DarkYellow
Restart-Service termservice -Force
#容許自定義端口經過防火牆
Write-Host 添加防火牆策略,容許現有 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 已經完成 RDP 端口對應防火牆策略的添加! -ForegroundColor Green
}
else
{
Write-Host 添加RDP 端口對應防火牆策略失敗! -ForegroundColor Red
}
Write-Host
Write-Host 完成 RDP 端口修改!
}
2 {
Write-Host
Write-Host 正在恢復系統默認端口...
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 正在刪除防火牆設置...
Remove-NetFirewallRule -DisplayName "Allow Custom RDP PortNumber"
write-host 完成恢復!
}
}文檔
修改RDP端口的執行效果以下所示:get
恢復RDP默認端口的執行效果以下圖所示:cmd
做者: 付海軍
出處:http://fuhj02.blog.51cto.com
版權:本文版權歸做者和51cto共有
轉載:歡迎轉載,爲了保存做者的創做熱情,請按要求【轉載】,謝謝
要求:未經做者贊成,必須保留此段聲明;必須在文章中給出原文鏈接且保證內容完整!不然必究法律責任!
我的網站: http://www.fuhaijun.com/it