Enter-PSSession

Otwiera interaktywną sesję zdalną PowerShell na hoście.

Enter-PSSession to cmdlet PowerShell, który otwiera interaktywną sesję zdalną na innym komputerze. W praktyce: wpisujesz polecenie, a Twój prompt zmienia się na coś w stylu [serwer01]: PS C:\> i od tej chwili każda komenda leci na maszynie zdalnej, dokładnie tak, jakbyś siedział przy jej klawiaturze. Sesja jest jeden-do-jednego (jeden komputer naraz) i działa po WinRM, a w PowerShell 7+ także po SSH. Idealne do administrowania serwerami Windows bez RDP i bez wstawania z fotela.

Składnia i najważniejsze opcje

Podstawowa forma: Enter-PSSession [-ComputerName] [-Credential ]

  • -ComputerName — nazwa hosta, FQDN albo IP maszyny zdalnej (łączy się przez WinRM).
  • -Credential — konto użytkownika do logowania. Podaj Domena\User albo wynik Get-Credential.
  • -Session — wejdź do istniejącej sesji utworzonej wcześniej przez New-PSSession (sesja przeżywa rozłączenie).
  • -UseSSL — wymusza szyfrowanie SSL/TLS przy połączeniu WinRM (port 5986 zamiast 5985).
  • -Port — niestandardowy port WinRM, jeśli ktoś przesunął go z domyślnego.
  • -ConfigurationName — wybór konfiguracji sesji na hoście (domyślnie Microsoft.PowerShell).
  • -HostName + -SSHTransport — łączenie po SSH zamiast WinRM (PowerShell 7+, działa też na Linux/macOS).
  • -VMName / -ContainerId — wejście do sesji w maszynie wirtualnej Hyper-V lub kontenerze, bez sieci.

Przykłady użycia

  • Enter-PSSession -ComputerName serwer01 — najprostsze połączenie po WinRM z aktualnymi poświadczeniami.
  • Enter-PSSession -ComputerName serwer01 -Credential (Get-Credential) — to samo, ale z monitem o login i hasło.
  • Enter-PSSession -ComputerName serwer01 -UseSSL -Port 5986 — sesja szyfrowana SSL na porcie HTTPS WinRM.
  • $s = New-PSSession -ComputerName serwer01; Enter-PSSession -Session $s — wejście do trwałej sesji, którą możesz opuścić i wrócić bez utraty kontekstu.
  • Enter-PSSession -HostName serwer01 -UserName admin -SSHTransport — połączenie po SSH (przydatne między systemami).

Częste błędy i pułapki

Najczęstszy zgrzyt to WinRM, który nie nasłuchuje — na docelowej maszynie odpal Enable-PSRemoting -Force, inaczej dostaniesz błąd „WinRM cannot complete the operation”. Przy maszynach spoza domeny musisz dorzucić host do TrustedHosts, np. Set-Item WSMan:\localhost\Client\TrustedHosts -Value serwer01 — inaczej PowerShell odmówi z powodu braku zaufania.

Pamiętaj, że Enter-PSSession jest interaktywne i tylko do jednego hosta. Jeśli chcesz odpalić jedno polecenie na wielu serwerach naraz, to nie ta komenda — użyj Invoke-Command. Zmienne lokalne nie przeniosą się automatycznie do sesji zdalnej, więc nie zdziw się, że $mojaZmienna jest pusta po drugiej stronie.

Wyjście z sesji to Exit-PSSession albo po prostu exit — to kończy interaktywny tryb, ale sesję utworzoną przez New-PSSession trzeba osobno posprzątać Remove-PSSession, bo inaczej zostaje wisieć.

Powiązane komendy: New-PSSession, Exit-PSSession, Invoke-Command, Get-PSSession, Remove-PSSession, Enable-PSRemoting, Get-Credential.