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]
-ComputerName— nazwa hosta, FQDN albo IP maszyny zdalnej (łączy się przez WinRM).-Credential— konto użytkownika do logowania. PodajDomena\Useralbo wynikGet-Credential.-Session— wejdź do istniejącej sesji utworzonej wcześniej przezNew-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ślnieMicrosoft.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.