應朋友的要求寫了一個通過PowerShell修改遠端桌面(Remote Desktop)埠的指令碼,不復雜,啟動指令碼後有兩個選項:1.自定義遠端桌面;2.回覆遠端桌面的預設埠3389 發出來給有用的兄弟。
由於這裡向防火牆增加和刪除例外是使用Windows8和Windows2012內建的Cmdlet: New-NetFirewallRule和Remove-NetFirewallRule。所以本指令碼當前僅適用於Windows8和Windows2012以上版本的Windows作業系統,使用時請注意適用的範圍。如果想相容其他版本的windows系統,請將對應的cmdlet替換為netsh命令,具體的使用方法請參見以下幫助文件http://technet.microsoft.com/library/hh831755.aspx
在修改RDP埠的過程中,首先修改登錄檔“HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp”下“PortNumber”的鍵值為指定的埠,接下來重啟Remote Desktop Services服務,並將該埠對應的防火牆入站請求新增到防火牆例外中。
在恢復預設RDP埠的過程中,首先將之前新增的防火牆例外清理掉,然後將登錄檔中對應鍵值的埠改回3389,最後重啟Remote Desktop Services服務。
需要強調的是重啟遠端桌面服務的過程中遠端桌面將會短時間中斷,需要重新連線,並將該埠對應的防火牆入站請求新增到防火牆例外中,此處新增的僅僅是作業系統層面的防火牆例外,如果讀者使用的是類似Windows Azure之類的虛擬化方案一定要對應的增加外部防火牆的例外,否則修改後的RDP埠將會無法從外部連線。
廢話不多說,上程式碼:
Clear
Write-Host
Write-Host 1、自定義遠端桌面埠 -ForegroundColor 10
Write-Host 2、恢復系統預設的遠端桌面埠 -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埠的執行效果如下所示:
恢復RDP預設埠的執行效果如下圖所示:
作者: 付海軍
出處:http://fuhj02.cnblogs.com
版權:本文版權歸作者和部落格園共有
轉載:歡迎轉載,為了儲存作者的創作熱情,請按要求【轉載】,謝謝
要求:未經作者同意,必須保留此段宣告;必須在文章中給出原文連線且保證內容完整!否則必究法律責任!
個人網站: http://www.fuhaijun.com/