Назад | Перейти на главную страницу

powershell: удаленная проверка номера порта RDP

Я создаю сценарий для проверки сведений о подключении к удаленному рабочему столу.

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

С помощью приведенного выше сценария я могу проверить, включен RDP или нет. Но мне нужно проверить номер порта, который будет использоваться в RDP.

Я знаю, что 3389 используется, но в моей среде некоторые серверы RDP настроены на другие порты.

Мне нужно получить номер порта. Я проверил в ROOT \ CIMV2 \ TerminalServices WMI Class, но детали номера порта там нет.

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

В этом месте я вижу двойное слово (Номер порта), которые содержат сведения о номере порта.

Можем ли мы проверить другой способ, потому что, проверяя реестр, нам нужно запустить удаленную службу реестра, и я боюсь, что иногда они останавливаются, и мы не можем ее запустить.

Я не уверен в удаленном реестре, обычно этого достаточно для запуска 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}

получайте удовольствие от модуля 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
}

Лучший способ без каких-либо инструментов

    $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