powershell:远程检查 RDP 端口号

powershell:远程检查 RDP 端口号

我正在创建一个脚本来检查远程桌面连接的详细信息。

$ts = get-WMIObject Win32_TerminalServiceSetting  -computername $s -Namespace ROOT\CIMV2\TerminalServices

使用上述脚本,我可以检查 RDP 是否已启用。但我需要检查 RDP 中使用的端口号。

我知道 3389 正在被使用,但在我的环境中,一些服务器的 RDP 在其他端口上配置。

我需要获取端口号。我检查了 ROOT\CIMV2\TerminalServices WMI 类,但没有找到端口号详细信息。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

在这个位置我可以看到有一个 dword (端口号) 包含端口号详细信息。

我们能否通过其他方式检查,因为通过检查注册表,我们需要启动远程注册表服务正在运行,但我担心有时它们会停止而我们无法运行它。

答案1

我不确定远程注册表,通常启动 WinRM 就足够了。您可以结合使用 Invoke-Command 和 Get-itemProperty 来检查端口号。

Invoke-Command -HideComputerName computer_machine { Get-ItemProperty  -Path HKLM:\SYSTEM\CurrentControlSet\Control\Termin*Server\WinStations\RDP*CP\ -Name PortNumber | select PortNumber}

答案2

如果您使用的是 Windows 10 和 Windows Server 2012,我发现了了解端口号的最简单方法。

get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\'-name portnumber 

答案3

享受 psremoting 模块带来的乐趣 http://psremoteregistry.codeplex.com/

Import-Module PSRemoteRegistry
$computers="server2","server3"
Foreach($computer in $computers){
get-regdword -Computer $computer -Hive LocalMachine -Key 'SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Value PortNumber |select computername,data
}

答案4

无需任何工具的最佳方法

    $computers="computer1","Computer2"
$result=Foreach ($Computer in $Computers) 
{
$RegBase = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine,$Computer)
$Reg=$RegBase.OpenSubKey(‘SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp’).GetValue(‘PortNumber’)
New-Object -TypeName PSCustomObject -Property @{
ComputerName = $Computer
Port=$reg
}
}

$result|select computername,port

相关内容