Zdalny Pulpit zdalnie

Dość często zdarzają się sytuacjie (nawet mi), gdy chcemy połączyć się zdalnie z jakimś komputerem, niemniej po chwili dostajemy ładny komunikat:

Główna przyczyna to brak skonfigurowanego RDP po stronie zdalnego systemu.

Co wtedy ?? Albo idziemy na piechotę do maszyny by włączyć obsługę RDP, albo zdalnie włączamy zdalny pulpit. Możemy tego dokonać poprzez zdalne podłączenie się do rejestru obcego systemu. Aby w ogóle móc coś takiego zrobić trzeba mieć jednak dostęp do lokalizacji \\host\c$ oraz musi być włączona usługa „Rejestru zdalnego”. Wymagane będzie również podanie nazwy użytkownika i hasła dla konta z uprawnieniami administratora zdalnego systemu.

PowerShell sam w sobie nie umożliwia obsługi zdalnego rejestru niemniej jednak możemy skorzystać z gotowej przystawki PSRemoteRegistry stworzonej do tego właśnie celu. Rozpakowujemy przystawkę oraz podpisujemy skrypty by móc je wykonywać, a następnie ładujemy moduł.

Import-Module PSRemoteRegistry

Parametr odpowiadający za stan usługi zdalnego pulpity znajduje się w kluczu HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server pod wartością fDenyTSConnections.

Modyfikujemy wpis ustawiając wartość 0. Trzeba pamiętać, iż parametr pyta się o Deny dlatego wartość 1 – wyłączony, 0 – włączony.

Get-RegValue -ComputerName “10.10.10.10” -Key "SYSTEM\CurrentControlSet\Control\Terminal Server" -Value fDenyTSConnections -Ping

Lub w przypadku wielu maszyn

Get-RegValue -ComputerName “10.10.10.8”,“10.10.10.9”,“10.10.10.10”  -Key "SYSTEM\CurrentControlSet\Control\Terminal Server" -Value fDenyTSConnections -Ping

I ustawiamy nową wartość parametru.

Set-RegDWord -ComputerName “10.10.10.10” -Key "SYSTEM\CurrentControlSet\Control\Terminal Server" -Value fDenyTSConnections -Data 0x01 -Ping

Opcjonalnie możemy ograniczyć dostęp przez poszczególne karty sieciowe. Aby tak zrobić odnajdujemy klucz: HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces i kopiujemy nazwę klucza odpowiadającego interesującego nas interfejsu sieciowego w celu uzyskania jego GUIDa.

Get-RegKey -ComputerName “10.10.10.10” -Key "SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces" –Ping | Format-List

Przechodzimy znów do HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server i tworzymy podklucz lanatable. W nim tworzymy kolejny podklucz o nazwie odpowiadającej wcześniej skopiowanemu GUIDowi (bez początkowej ścieżki klucza). Wewnątrz tworzymy parametr wartości DWORD o nazwie LanaID i o wartości 1

New-RegKey -ComputerName “10.10.10.10” -Key "SYSTEM\CurrentControlSet\Control\Terminal Server"  -Name lanatable
New-RegKey -ComputerName “10.10.10.10” -Key "SYSTEM\CurrentControlSet\Control\Terminal Server\lanatable "  -Name {GUID}
Set-RegDWord -ComputerName “10.10.10.10” -Key "SYSTEM\CurrentControlSet\Control\Terminal Server\lanatable\{GUID}" -Value LanaID -Data 0x01 -Ping

Następnie szukamy klucza HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstation\RDP-Tcp i dla wartości LanAdapter wpisujemy wcześniej utworzone ID czyli 1. (Domyślnie jest 0 czy udostępnienie RDP dla wszystkich interfejsów).

Set-RegDWord -ComputerName “10.10.10.10” -Key "SYSTEM\CurrentControlSet\Control\Terminal Server\Winstation\RDP-Tcp" -Value LanAdapter -Data 0x01 -Ping

Ostatnim krokiem jest uruchomienie usługi zdalnego pulpitu. Można tego dokonać po prostu zdalnie restartując maszynę.

shutdown /r /t 0 /m 10.10.10.10

Tak zdalnie zmodyfikowany rejestr pozwoli nam na podłączenie się przez protokół RDP do maszyny zdalnej.

Źródła
http://support.microsoft.com/kb/924927
http://technet.microsoft.com/en-us/library/cc778860(WS.10).aspx
http://code.msdn.microsoft.com/PSRemoteRegistry

Advertisements

3 thoughts on “Zdalny Pulpit zdalnie

  1. Bardzo ciekawe, ale jak zwykle, żeby to działało nie tylko u Pana…
    Mam postawiony serwer IIS 7.5 na WinXPHomeSP3 i chciałbym mieć możliwość zdalnego podglądu co się tam dzieje z poziomu Win7Pro, bo taki mam na laptopie.
    Niestety nawet nie zacząłem ponieważ:
    „Import-Module: The specified module .. was not loaded because no valid module file waz found in any module directory”
    To co, mam PS z niepełną instalacją? Nie może sobie ściągnąć modułu z netu?

  2. Dzięki, zainstalowałem. Jeszcze tylko jedno pytanie, bo nie znalazłem odpowiedzi na nie w get-help ani na http://archive.msdn.microsoft.com/PSRemoteRegistry:
    Geter i seter -RegValue ma jako argument tablicę stringów dla -ComputerName, standardowo dla localhosta. Czy te stringi MUSZĄ mieć postać adresu IP jak w twoim przykładzie, czy może to być domena np. moj.zdalny.net?, Próbowałem przed chwilą i wywaliło mi że „nie można odnaleźć ścieżki sieciowej”

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s