Inhalt

Enter-PSSession zu Ubuntu schlägt fehl

Inhalt

Enter-PSSession : An error has occurred which PowerShell cannot handle. A remote session might have ended

Sollte diese Fehlmeldung beim Aufbau einer PSSession zu einer Linux Maschine angezeigt werden, kann das eine ganz einfache Ursache haben.

In diesem Beispiel habe ich versucht mich mit meinem Ubuntu Server per SSH/PowerShell zu verbinden.

Enter-PSSession -HostName ubuntupwsh.dev.toolsection.info -UserName fabian

Die Lösung zeigt sich wenn man die Fehlermeldung genauer analysiert.

PS C:\> $Error[0] | fl Exception -Force

Exception : System.Management.Automation.Remoting.PSRemotingDataStructureException: An error has occurred which PowerShell cannot handle. A remote session might have ended. ---> 
 System.Management.Automation.CommandNotFoundException: **The term 'ssh.exe' is not recognized as the name of a cmdlet, function, script file, or operable program**.
 Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
 at System.Management.Automation.CommandDiscovery.LookupCommandInfo(String commandName, CommandTypes 
 commandTypes, SearchResolutionOptions searchResolutionOptions, CommandOrigin commandOrigin, 
 ExecutionContext context)
 at System.Management.Automation.Runspaces.SSHConnectionInfo.StartSSHProcess(StreamWriter& 
 stdInWriterVar, StreamReader& stdOutReaderVar, StreamReader& stdErrReaderVar)
 at System.Management.Automation.Remoting.Client.SSHClientSessionTransportManager.CreateAsync()
 at System.Management.Automation.Remoting.ClientRemoteSessionDSHandlerImpl.SendNegotiationAsync(RemoteSes
 sionState sessionState)
 at System.Management.Automation.Remoting.ClientRemoteSessionDSHandlerImpl.HandleStateChanged(Object 
 sender, RemoteSessionStateEventArgs arg)
 at System.Management.Automation.ExtensionMethods.SafeInvoke\[T\](EventHandler\`1 eventHandler, Object 
 sender, T eventArgs)
 at 
 System.Management.Automation.Remoting.ClientRemoteSessionDSHandlerStateMachine.RaiseStateMachineEvents()
 at System.Management.Automation.Remoting.ClientRemoteSessionDSHandlerStateMachine.ProcessEvents()
 --- End of inner exception stack trace ---
 at System.Management.Automation.Runspaces.AsyncResult.EndInvoke()
 at System.Management.Automation.Runspaces.Internal.RunspacePoolInternal.EndOpen(IAsyncResult 
 asyncResult)
 at System.Management.Automation.Runspaces.Internal.RemoteRunspacePoolInternal.Open()
 at System.Management.Automation.RemoteRunspace.Open()
 at Microsoft.PowerShell.Commands.EnterPSSessionCommand.GetRunspaceForSSHSession()
 at Microsoft.PowerShell.Commands.EnterPSSessionCommand.ProcessRecord()
 at System.Management.Automation.Cmdlet.DoProcessRecord()
 at System.Management.Automation.CommandProcessor.ProcessRecord()

Der entscheidende Teil dabei ist:

The term ‘ssh.exe’ is not recognized as the name of a cmdlet, function, script file, or operable program.

Es fehlt die ssh.exe. Das kann mehrere Ursachen haben:

  1. Sie ist nicht installiert
  2. Sie kann in der Path Variable nicht gefunden werden.

Für beide Ursachen gibt es eine Lösung in dieser Anleitung.