PowerShell: Testowe połączenie przez remoting do lokalnego komputera

20-cze-2020

Remoting służy do uruchamiania poleceń na zdalnym komputerze. Zdarza się jednak, że chcesz przetestować połączenie na lokalnym komputerze, czyli przez remoting połączyć się ze swojego komputera na swój komputer. Jak to zrobić?

Twój lokalny komputer ma kilka nazw, które można wykorzystać łącząc się do niego:

  • localhost
  • 127.0.0.1
  • $env:COMPUTERNAME

Niestety polecenie w takiej postaci:

Invoke-Command -ComputerName localhost { echo 1 }

Kończy się błędem:

[localhost] Connecting to remote server localhost failed with the following error message : Access is denied. For more information, see the about_Remote_Troubleshooting
Help topic.
+ CategoryInfo : OpenError: (localhost:String) [], PSRemotingTransportException
+ FullyQualifiedErrorId : AccessDenied,PSSessionStateBroken

Dlaczego? Jestem administratorem i nie mam uprawnień? Przecież domyślnie, jeśli nie przekazuję innych credentials, to połączenie jest wykonywane w bieżącym kontekście bezpieczeństwa. Najprawdopodobniej wiąże się to z tym, że połączenie może wykonywać tylko administrator, a przy połączeniu do serwera zdalnego twoje konto traci token administratora. Da się to jednak prosto obejść! Wystarczy do polecenia dodać parametr credential i wskazać, że połączenie zdalne ma być wykonywane w jego kontekście bezpieczeństwa, o tak:

Invoke-Command -ComputerName localhost { echo 1 } -Credential (Get-Credential)

Takie świeżo pobrane poświadczenia pozwolą pomyślnie wykonać połączenie, które domyślnie jest dostępne tylko dla administratorów

Komentarze są wyłączone

Autor: Rafał Kraik