Share via


Enter-PSSession

Startet eine interaktive Sitzung mit einem Remotecomputer.

Syntax

Enter-PSSession
     [-ComputerName] <String>
     [-EnableNetworkAccess]
     [[-Credential] <PSCredential>]
     [-ConfigurationName <String>]
     [-Port <Int32>]
     [-UseSSL]
     [-ApplicationName <String>]
     [-SessionOption <PSSessionOption>]
     [-Authentication <AuthenticationMechanism>]
     [-CertificateThumbprint <String>]
     [<CommonParameters>]
Enter-PSSession
     [-HostName] <String>
     [-Options <Hashtable>]
     [-Port <Int32>]
     [-UserName <String>]
     [-KeyFilePath <String>]
     [-Subsystem <String>]
     [-ConnectingTimeout <Int32>]
     [-SSHTransport]
     [<CommonParameters>]
Enter-PSSession
     [[-Session] <PSSession>]
     [<CommonParameters>]
Enter-PSSession
     [[-ConnectionUri] <Uri>]
     [-EnableNetworkAccess]
     [[-Credential] <PSCredential>]
     [-ConfigurationName <String>]
     [-AllowRedirection]
     [-SessionOption <PSSessionOption>]
     [-Authentication <AuthenticationMechanism>]
     [-CertificateThumbprint <String>]
     [<CommonParameters>]
Enter-PSSession
     [-InstanceId <Guid>]
     [<CommonParameters>]
Enter-PSSession
     [[-Id] <Int32>]
     [<CommonParameters>]
Enter-PSSession
     [-Name <String>]
     [<CommonParameters>]
Enter-PSSession
     [-VMId] <Guid>
     [-Credential] <PSCredential>
     [-ConfigurationName <String>]
     [<CommonParameters>]
Enter-PSSession
     [-VMName] <String>
     [-Credential] <PSCredential>
     [-ConfigurationName <String>]
     [<CommonParameters>]
Enter-PSSession
     [-ContainerId] <String>
     [-ConfigurationName <String>]
     [-RunAsAdministrator]
     [<CommonParameters>]

Beschreibung

Das Enter-PSSession Cmdlet startet eine interaktive Sitzung mit einem einzelnen Remotecomputer. Während der Sitzung werden die eingegebenen Befehle auf dem Remotecomputer ausgeführt, so als ob Sie direkt auf dem Remotecomputer eingeben würden. Sie können sich zu einem Zeitpunkt jeweils nur in einer interaktiven Sitzung befinden.

Normalerweise verwenden Sie den ComputerName-Parameter, um den Namen des Remotecomputers anzugeben. Sie können jedoch auch eine Sitzung verwenden, die Sie mit dem New-PSSession Cmdlet für die interaktive Sitzung erstellen. Sie können jedoch die Disconnect-PSSessionCmdlets , Connect-PSSessionoder Receive-PSSession nicht verwenden, um die Verbindung mit einer interaktiven Sitzung zu trennen oder erneut eine Verbindung mit einer sitzung herzustellen.

Ab PowerShell 6.0 können Sie Secure Shell (SSH) verwenden, um eine Verbindung mit einem Remotecomputer herzustellen, wenn SSH auf dem lokalen Computer verfügbar ist und der Remotecomputer mit einem PowerShell-SSH-Endpunkt konfiguriert ist. Der Vorteil einer SSH-basierten PowerShell-Remotesitzung besteht darin, dass sie auf mehreren Plattformen (Windows, Linux, macOS) funktioniert. Für SSH-basiertes Remoting verwenden Sie den Parameter "HostName ", um den Remotecomputer und die relevanten Verbindungsinformationen anzugeben. Weitere Informationen zum Einrichten von PowerShell SSH-Remoting finden Sie unter PowerShell-Remoting über SSH.

Verwenden Sie das Cmdlet, oder geben exitSie ein, um die Exit-PSSession interaktive Sitzung zu beenden und die Verbindung mit dem Remotecomputer zu trennen.

Beispiele

Beispiel 1: Starten einer interaktiven Sitzung

PS> Enter-PSSession
[localhost]: PS>

Dieser Befehl startet eine interaktive Sitzung auf dem lokalen Computer. Die Eingabeaufforderung ändert sich, um anzugeben, dass die Befehle nun in einer anderen Sitzung ausgeführt werden.

Die eingegebenen Befehle werden in der neuen Sitzung ausgeführt, und die Ergebnisse werden als Text an die Standardsitzung zurückgegeben.

Beispiel 2: Arbeiten mit einer interaktiven Sitzung

Der erste Befehl verwendet das Enter-PSSession Cmdlet, um eine interaktive Sitzung mit Server01, einem Remotecomputer, zu starten. Wenn die Sitzung startet, ändert sich die Eingabeaufforderung und enthält den Computernamen.

Der zweite Befehl ruft den PowerShell-Prozess ab und leitet die Ausgabe an die Process.txt Datei um. Der Befehl wird an den Remotecomputer gesendet, und die Datei wird auf dem Remotecomputer gespeichert.

Der dritte Befehl verwendet den exit Schlüsselwort (keyword), um die interaktive Sitzung zu beenden und die Verbindung zu schließen. Der vierte Befehl bestätigt, dass sich die Datei „Process.txt“ auf dem Remotecomputer befindet. Ein Get-ChildItem Befehl ("dir") auf dem lokalen Computer kann die Datei nicht finden.

PS C:\> Enter-PSSession -ComputerName Server01
[Server01]: PS C:\>
[Server01]: PS C:\> Get-Process PowerShell > C:\ps-test\Process.txt
[Server01]: PS C:\> exit
PS C:\>
PS C:\> dir C:\ps-test\Process.txt
Get-ChildItem : Cannot find path 'C:\ps-test\Process.txt' because it does not exist.
At line:1 char:4
+ dir <<<<  c:\ps-test\Process.txt

Dieser Befehl zeigt die Arbeitsweise in einer interaktiven Sitzung mit einem Remotecomputer.

Beispiel 3: Verwenden des Session-Parameters

PS> $s = New-PSSession -ComputerName Server01
PS> Enter-PSSession -Session $s
[Server01]: PS>

Diese Befehle verwenden den Session-Parameter von Enter-PSSession , um die interaktive Sitzung in einer vorhandenen PowerShell-Sitzung (PSSession) auszuführen.

Beispiel 4: Starten einer interaktiven Sitzung und Angeben der Port- und Anmeldeinformationsparameter

PS> Enter-PSSession -ComputerName Server01 -Port 90 -Credential Domain01\User01
[Server01]: PS>

Dieser Befehl startet eine interaktive Sitzung mit dem Computer „Server01“. Es verwendet den Port-Parameter , um den Port anzugeben, und den Credential-Parameter , um das Konto eines Benutzers anzugeben, der über die Berechtigung zum Herstellen einer Verbindung mit dem Remotecomputer verfügt.

Beispiel 5: Beenden einer interaktiven Sitzung

PS> Enter-PSSession -ComputerName Server01
[Server01]: PS> Exit-PSSession
PS>

In diesem Beispiel wird veranschaulicht, wie eine interaktive Sitzung gestartet und beendet wird. Der erste Befehl verwendet das Enter-PSSession Cmdlet, um eine interaktive Sitzung mit dem Server01-Computer zu starten.

Der zweite Befehl verwendet das Exit-PSSession Cmdlet, um die Sitzung zu beenden. Sie können auch die exit Schlüsselwort (keyword) verwenden, um die interaktive Sitzung zu beenden. Exit-PSSession und Exit haben den gleichen Effekt.

Beispiel 6: Starten einer interaktiven Sitzung mithilfe von SSH

PS> Enter-PSSession -HostName UserA@LinuxServer01

In diesem Beispiel wird gezeigt, wie Sie eine interaktive Sitzung mithilfe von Secure Shell (SSH) starten. Wenn SSH auf dem Remotecomputer für die Verwendung von Kennwörtern konfiguriert ist, werden Sie zur Eingabe eines Kennworts aufgefordert. Andernfalls müssen Sie die schlüsselbasierte Benutzerauthentifizierung verwenden.

Beispiel 7: Starten einer interaktiven Sitzung mithilfe von SSH mit einem Port und einem Benutzerauthentifizierungsschlüssel

PS> Enter-PSSession -HostName UserA@LinuxServer02:22 -KeyFilePath c:\sshkeys\userAKey_rsa

In diesem Beispiel wird gezeigt, wie Sie eine interaktive Sitzung mithilfe von SSH starten. Der Benutzername und die SSH-Portnummer werden als Teile des Werts des HostName-Parameters angegeben. Der KeyFilePath-Parameter gibt den Speicherort eines RSA-Schlüssels an, der zur Authentifizierung des Benutzers auf dem Remotecomputer verwendet wird.

Beispiel 8: Starten einer interaktiven Sitzung mithilfe von SSH-Optionen

$options = @{
    Port=22
    User = 'UserA'
    Host = 'LinuxServer02'
}
Enter-PSSession -KeyFilePath c:\sshkeys\userAKey_rsa -Options $options

In diesem Beispiel wird gezeigt, wie Sie eine interaktive Sitzung mithilfe von SSH starten. Der Options-Parameter verwendet eine Hashtabelle von Werten, die als Optionen an den zugrunde liegenden ssh Befehl übergeben werden, der die Verbindung mit dem Remotesystem hergestellt hat.

Parameter

-AllowRedirection

Ermöglicht die Umleitung dieser Verbindung an einen alternativen URI (Uniform Resource Identifier). Standardmäßig ist die Umleitung nicht zulässig.

Bei Verwendung des ConnectionURI-Parameters kann das Remoteziel eine Anweisung zum Umleiten an einen anderen URI zurückgeben. Standardmäßig leitet PowerShell keine Verbindungen um, aber Sie können diesen Parameter verwenden, um die Verbindung umzuleiten.

Sie können auch einschränken, wie oft die Verbindung umgeleitet wird, indem Sie den MaximumConnectionRedirectionCount-Optionswert der Sitzung ändern. Verwenden Sie den Parameter MaximumRedirection des New-PSSessionOption Cmdlets, oder legen Sie die MaximumConnectionRedirectionCount-Eigenschaft der $PSSessionOption Einstellungsvariablen fest. Der Standardwert ist 5.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ApplicationName

Gibt das Anwendungsnamenssegment des Verbindungs-URI an. Mit diesem Parameter können Sie den Anwendungsnamen angeben, wenn Sie den ConnectionURI-Parameter im Befehl nicht verwenden.

Der Standardwert ist der Wert der $PSSessionApplicationName Einstellungsvariable auf dem lokalen Computer. Wenn diese Einstellungsvariable nicht definiert ist, ist der Standardwert „WSMan“. Dieser Wert ist für die meisten Verwendungsarten geeignet. Weitere Informationen finden Sie unter about_Preference_Variables.

Der WinRM-Dienst verwendet den Anwendungsnamen, um einen Listener für die Verbindungsanforderung auszuwählen. Der Wert dieses Parameters sollte mit dem Wert der URLPrefix-Eigenschaft eines Listeners auf dem Remotecomputer übereinstimmen.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Authentication

Gibt den Mechanismus an, der zum Authentifizieren der Anmeldeinformationen des Benutzers verwendet wird. Zulässige Werte für diesen Parameter:

  • Standard
  • Basic
  • Credssp
  • Digest
  • Kerberos
  • Aushandeln
  • NegotiateWithImplicitCredential

Der Standardwert ist Default.

Die CredSSP-Authentifizierung ist nur in Windows Vista, Windows Server 2008 und höheren Versionen des Windows-Betriebssystems verfügbar.

Weitere Informationen zu den Werten dieses Parameters finden Sie unter AuthenticationMechanism Enum.

Achtung

Die CredSSP (Credential Security Support Provider)-Authentifizierung, bei der die Anmeldeinformationen des Benutzers zur Authentifizierung an einen Remotecomputer übergeben werden, ist für Befehle konzipiert, die die Authentifizierung auf mehr als einer Ressource erfordern, z. B. beim Zugriff auf eine Remotenetzwerkfreigabe. Dieser Mechanismus erhöht das Sicherheitsrisiko des Remotevorgangs. Wenn die Sicherheit des Remotecomputers gefährdet ist, können die an ihn übergebenen Anmeldeinformationen zum Steuern der Netzwerksitzung verwendet werden.

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CertificateThumbprint

Gibt das digitale Zertifikat für öffentliche Schlüssel (X509) eines Benutzerkontos an, das über die Berechtigung zum Ausführen dieser Aktion verfügt. Geben Sie den Zertifikatfingerabdruck des Zertifikats ein.

Zertifikate werden bei der clientzertifikatbasierten Authentifizierung verwendet. Sie können nur lokalen Benutzerkonten zugeordnet werden und funktionieren nicht mit Domänenkonten.

Verwenden Sie zum Abrufen eines Zertifikats den Get-Item Befehl oder Get-ChildItem im PowerShell-Laufwerk Cert:.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

Gibt einen Computernamen an. Dieses Cmdlet startet eine interaktive Sitzung mit dem angegebenen Remotecomputer. Geben Sie nur einen Computernamen ein. Die Standardeinstellung ist der lokale Computer.

Geben Sie den NetBIOS-Namen, die IP-Adresse oder den vollqualifizierten Domänennamen des Computers ein. Sie können auch einen Computernamen an übergeben Enter-PSSession.

Um eine IP-Adresse im Wert des ComputerName-Parameters zu verwenden, muss der Befehl den Credential-Parameter enthalten. Außerdem muss der Computer für den HTTPS-Transport konfiguriert sein, oder die IP-Adresse des Remotecomputers muss in der WinRM TrustedHosts-Liste auf dem lokalen Computer enthalten sein. Anweisungen zum Hinzufügen eines Computernamens zur TrustedHosts-Liste finden Sie unter Hinzufügen eines Computers zur Liste der vertrauenswürdigen Hosts in about_Remote_Troubleshooting.

Hinweis

Wenn Sie auf dem Windows-Betriebssystem den lokalen Computer in den Wert des Parameters ComputerName einschließen möchten, müssen Sie PowerShell mit der Option Als Administrator ausführen starten.

Type:String
Aliases:Cn
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-ConfigurationName

Gibt die Sitzungskonfiguration an, die für die interaktive Sitzung verwendet wird.

Geben Sie einen Konfigurationsnamen oder den vollqualifizierten Ressourcen-URI für eine Sitzungskonfiguration ein. Wenn Sie nur den Konfigurationsnamen angeben, wird dem folgenden Schema-URI vorangestellt: http://schemas.microsoft.com/powershell.

Bei Verwendung mit SSH gibt dies das Subsystem an, das für das Ziel verwendet werden soll, wie in sshd_config definiert. Der Standardwert für SSH ist das powershell Subsystem.

Die Sitzungskonfiguration für eine Sitzung befindet sich auf dem Remotecomputer. Wenn die angegebene Sitzungskonfiguration auf dem Remotecomputer nicht vorhanden ist, führt der Befehl zu einem Fehler.

Der Standardwert ist der Wert der $PSSessionConfigurationName Einstellungsvariable auf dem lokalen Computer. Wenn diese Einstellungsvariable nicht festgelegt ist, ist die Standardeinstellung „Microsoft.PowerShell“. Weitere Informationen finden Sie unter about_Preference_Variables.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ConnectingTimeout

Gibt die Zeitspanne in Millisekunden an, die für den Abschluss der ersten SSH-Verbindung zulässig ist. Wenn die Verbindung nicht innerhalb der angegebenen Zeit abgeschlossen wird, wird ein Fehler zurückgegeben.

Dieser Parameter wurde in PowerShell 7.2 eingeführt.

Type:Int32
Position:Named
Default value:unlimited
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ConnectionUri

Gibt einen URI an, der den Verbindungsendpunkt für die Sitzung definiert. Der URI muss vollqualifiziert sein. Das Format dieser Zeichenfolge lautet wie folgt:

<Transport>://<ComputerName>:<Port>/<ApplicationName>

Der Standardwert lautet:

http://localhost:5985/WSMAN

Wenn Sie keinen ConnectionURI angeben, können Sie die Parameter UseSSL, ComputerName, Port und ApplicationName zur Angabe der ConnectionURI-Werte verwenden.

Gültige Werte für das Transport-Segment des URI sind „HTTP“ und „HTTPS“. Wenn Sie einen Verbindungs-URI mit einem Transportsegment angeben, aber keinen Port angeben, wird die Sitzung mithilfe von Standardports erstellt: 80 für HTTP und 443 für HTTPS. Um die Standardports für PowerShell-Remoting zu verwenden, geben Sie Port 5985 für HTTP oder 5986 für HTTPS an.

Wenn der Zielcomputer die Verbindung an einen anderen URI umleitet, verhindert PowerShell die Umleitung, es sei denn, Sie verwenden den AllowRedirection-Parameter im Befehl.

Type:Uri
Aliases:URI, CU
Position:1
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ContainerId

Gibt die ID eines Containers an.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Credential

Gibt ein Benutzerkonto an, das über die Berechtigung zum Ausführen dieser Aktion verfügt. Der Standardwert ist der aktuelle Benutzer.

Geben Sie einen Benutzernamen ein, z. B. User01 oder Domain01\User01, oder geben Sie ein vom Get-Credential Cmdlet generiertes PSCredential-Objekt ein. Wenn Sie einen Benutzernamen eingeben, werden Sie aufgefordert, das Kennwort einzugeben.

Anmeldeinformationen werden in einem PSCredential-Objekt gespeichert, und das Kennwort wird als SecureString gespeichert.

Hinweis

Weitere Informationen zum Schutz von SecureString-Daten finden Sie unter Wie sicher ist SecureString?.

Type:PSCredential
Position:1
Default value:Current user
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-EnableNetworkAccess

Gibt an, dass dieses Cmdlet Loopbacksitzungen ein interaktives Sicherheitstoken hinzufügt. Mit dem interaktiven Token können Sie die Befehle in der Loopbacksitzung ausführen, um Daten von anderen Computern abzurufen. Beispielsweise können Sie einen Befehl in der Sitzung ausführen, mit dem XML-Dateien von einem Remotecomputer auf den lokalen Computer kopiert werden.

Eine Loopbacksitzung ist eine PSSession , die auf demselben Computer entsteht und endet. Um eine Loopbacksitzung zu erstellen, lassen Sie den ComputerName-Parameter aus, oder legen Sie seinen Wert auf fest. (punkt), localhost oder der Name des lokalen Computers.

Standardmäßig werden Loopbacksitzungen mithilfe eines Netzwerktokens erstellt, das möglicherweise keine ausreichende Berechtigung zur Authentifizierung bei Remotecomputern bietet.

Der EnableNetworkAccess-Parameter ist nur bei Loopbacksitzungen wirksam. Wenn Sie EnableNetworkAccess verwenden, wenn Sie eine Sitzung auf einem Remotecomputer erstellen, ist der Befehl erfolgreich, aber der Parameter wird ignoriert.

Sie können auch Remotezugriff in einer Loopbacksitzung erlauben, indem Sie den CredSSP-Wert des Authentication-Parameters verwenden, der die Anmeldeinformationen für die Sitzung an andere Computer delegiert.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HostName

Gibt einen Computernamen für eine SSH-basierte Verbindung (Secure Shell) an. Dies ähnelt dem ComputerName-Parameter , mit dem Unterschied, dass die Verbindung mit dem Remotecomputer über SSH und nicht über Windows WinRM hergestellt wird. Dieser Parameter unterstützt das Angeben des Benutzernamens und/oder ports als Teil des Hostnamenparameterwerts mithilfe des Formulars user@hostname:port. Der benutzername und/oder port, der als Teil des Hostnamens angegeben ist, hat Vorrang vor den -UserName Parametern und -Port , sofern angegeben. Dies ermöglicht das Übergeben mehrerer Computernamen an diesen Parameter, wobei einige über bestimmte Benutzernamen und/oder Ports verfügen, während andere den Benutzernamen und/oder Port aus den -UserName Parametern und -Port verwenden.

Dieser Parameter wurde in PowerShell 6.0 eingeführt.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Id

Gibt die ID einer vorhandenen Sitzung an. Enter-PSSession verwendet die angegebene Sitzung für die interaktive Sitzung.

Verwenden Sie das Cmdlet, um die Get-PSSession ID einer Sitzung zu ermitteln.

Type:Int32
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-InstanceId

Gibt die Instanz-ID einer vorhandenen Sitzung an. Enter-PSSession verwendet die angegebene Sitzung für die interaktive Sitzung.

Die Instanz-ID ist eine GUID. Verwenden Sie Get-PSSession das Cmdlet, um die instance-ID einer Sitzung zu finden. Sie können auch die Parameter Session, Name oder ID verwenden, um eine vorhandene Sitzung anzugeben. Alternativ können Sie den ComputerName-Parameter verwenden, um eine temporäre Sitzung zu starten.

Type:Guid
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-KeyFilePath

Gibt einen Schlüsseldateipfad an, der von Secure Shell (SSH) zum Authentifizieren eines Benutzers auf einem Remotecomputer verwendet wird.

SSH ermöglicht die Benutzerauthentifizierung über private/öffentliche Schlüssel als Alternative zur einfachen Kennwortauthentifizierung. Wenn der Remotecomputer für die Schlüsselauthentifizierung konfiguriert ist, kann dieser Parameter verwendet werden, um den Schlüssel bereitzustellen, der den Benutzer identifiziert.

Dieser Parameter wurde in PowerShell 6.0 eingeführt.

Type:String
Aliases:IdentityFilePath
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Gibt den Anzeigenamen einer vorhandenen Sitzung an. Enter-PSSession verwendet die angegebene Sitzung für die interaktive Sitzung.

Wenn der angegebene Name mit mehr als einer Sitzung übereinstimmt, führt der Befehl zu einem Fehler. Sie können auch die Parameter Session, InstanceID oder ID verwenden, um eine vorhandene Sitzung anzugeben. Alternativ können Sie den ComputerName-Parameter verwenden, um eine temporäre Sitzung zu starten.

Verwenden Sie zum Einrichten eines Anzeigenamens für eine Sitzung den Parameter Name des New-PSSession Cmdlets.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Options

Gibt eine Hashtabelle mit SSH-Optionen an, die beim Herstellen einer Verbindung mit einer SSH-Remotesitzung verwendet werden. Mögliche Optionen sind alle Werte, die von der Unix-basierten Version des SSH-Befehls unterstützt werden.

Alle Werte, die explizit von Parametern übergeben werden, haben Vorrang vor Werten, die in der Hashtabelle Optionen übergeben werden. Beispielsweise überschreibt die Verwendung des Port-Parameters jedes Port Schlüssel-Wert-Paar, das in der Hashtabelle Optionen übergeben wird.

Type:Hashtable
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Port

Gibt den Netzwerkport auf dem Remotecomputer an, der für diesen Befehl verwendet wird.

In PowerShell 6.0 war dieser Parameter im HostName-Parametersatz enthalten, der SSH-Verbindungen (Secure Shell) unterstützt.

WinRM (ComputerName-Parametersatz)

Zum Herstellen einer Verbindung mit einem Remotecomputer muss der Remotecomputer den für die Verbindung verwendeten Port abhören. Die Standardports sind 5985, d. h. der WinRM-Port für HTTP, und 5986, der WinRM-Port für HTTPS.

Bevor ein alternativer Port verwendet werden kann, müssen Sie den WinRM-Listener auf dem Remotecomputer für das Abhören an diesen Port konfigurieren. Verwenden Sie die folgenden Befehle, um den Listener zu konfigurieren:

  1. winrm delete winrm/config/listener?Address=*+Transport=HTTP
  2. winrm create winrm/config/listener?Address=*+Transport=HTTP @{Port="\<port-number\>"}

Verwenden Sie den Port-Parameter nur, wenn es unbedingt notwendig ist. Die Porteinstellung im Befehl gilt für alle Computer oder Sitzungen, für die der Befehl ausgeführt wird. Eine alternative Porteinstellung kann verhindern, dass der Befehl auf allen Computern ausgeführt wird.

SSH (HostName-Parametersatz)

Um eine Verbindung mit einem Remotecomputer herzustellen, muss der Remotecomputer mit dem SSH-Dienst (SSHD) konfiguriert sein und auf dem Port lauschen, den die Verbindung verwendet. Der Standardport für SSH ist 22.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunAsAdministrator

Gibt an, dass die PSSession als Administrator ausgeführt wird.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Session

Gibt eine PowerShell-Sitzung (PSSession) an, die für die interaktive Sitzung verwendet werden soll. Dieser Parameter akzeptiert ein Sitzungsobjekt. Sie können auch die Parameter Name, InstanceID oder ID verwenden, um eine PSSession anzugeben.

Geben Sie eine Variable ein, die ein Sitzungsobjekt oder einen Befehl enthält, mit dem ein Sitzungsobjekt erstellt oder abgerufen wird, z. B. ein New-PSSession - oder Get-PSSession -Befehl. Sie können auch ein Sitzungsobjekt an übergeben Enter-PSSession. Mit diesem Parameter können Sie nur eine PSSession übermitteln. Wenn Sie eine Variable eingeben, die mehr als eine PSSession enthält, schlägt der Befehl fehl.

Wenn Sie oder das EXIT-Schlüsselwort (keyword) verwendenExit-PSSession, endet die interaktive Sitzung, aber die von Ihnen erstellte PSSession bleibt geöffnet und steht zur Verwendung zur Verfügung.

Type:PSSession
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-SessionOption

Legt erweiterte Optionen für die Sitzung fest. Geben Sie ein SessionOption-Objekt ein, z. B. ein Objekt, das Sie mithilfe des New-PSSessionOption Cmdlets erstellen, oder eine Hashtabelle, in der die Schlüssel Sitzungsoptionsnamen sind und die Werte Sitzungsoptionswerte sind.

Die Standardwerte für die Optionen werden durch den Wert der $PSSessionOption Einstellungsvariablen bestimmt, wenn sie festgelegt ist. Andernfalls werden die Standardwerte durch Optionen festgelegt, die in der Sitzungskonfiguration festgelegt sind.

Die Sitzungsoptionswerte haben Vorrang vor Standardwerten für Sitzungen, die in der Einstellungsvariablen $PSSessionOption und in der Sitzungskonfiguration festgelegt sind. Allerdings haben sie nicht Vorrang vor Höchstwerten, Kontingenten oder Grenzwerten, die in der Sitzungskonfiguration festgelegt sind.

Eine Beschreibung der Sitzungsoptionen, einschließlich der Standardwerte, finden Sie unter New-PSSessionOption. Informationen zur Einstellungsvariablen $PSSessionOption finden Sie unter about_Preference_Variables. Weitere Informationen zu Sitzungskonfigurationen finden Sie unter about_Session_Configurations.

Type:PSSessionOption
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SSHTransport

Gibt an, dass die Remoteverbindung mithilfe von Secure Shell (SSH) hergestellt wird.

Standardmäßig verwendet PowerShell Windows WinRM, um eine Verbindung mit einem Remotecomputer herzustellen. Dieser Switch zwingt PowerShell, den HostName-Parametersatz zum Herstellen einer SSH-basierten Remoteverbindung zu verwenden.

Dieser Parameter wurde in PowerShell 6.0 eingeführt.

Type:SwitchParameter
Accepted values:true
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Subsystem

Gibt das SSH-Subsystem an, das für die neue PSSession verwendet wird.

Dies gibt das Subsystem an, das für das Ziel verwendet werden soll, wie in sshd_config definiert. Das Subsystem startet eine bestimmte Version von PowerShell mit vordefinierten Parametern. Wenn das angegebene Subsystem auf dem Remotecomputer nicht vorhanden ist, schlägt der Befehl fehl.

Wenn dieser Parameter nicht verwendet wird, ist der Standardwert das "powershell"-Subsystem.

Type:String
Position:Named
Default value:Powershell
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-UserName

Gibt den Benutzernamen für das Konto an, das zum Erstellen einer Sitzung auf dem Remotecomputer verwendet wird. Die Benutzerauthentifizierungsmethode hängt davon ab, wie Secure Shell (SSH) auf dem Remotecomputer konfiguriert wird.

Wenn SSH für die grundlegende Kennwortauthentifizierung konfiguriert ist, werden Sie zur Eingabe des Benutzerkennworts aufgefordert.

Wenn SSH für die schlüsselbasierte Benutzerauthentifizierung konfiguriert ist, kann über den KeyFilePath-Parameter ein Schlüsseldateipfad angegeben werden, und es wird keine Kennworteingabeaufforderung angezeigt. Beachten Sie: Wenn sich die Clientbenutzerschlüsseldatei an einem bekannten SSH-Speicherort befindet, wird der KeyFilePath-Parameter für die schlüsselbasierte Authentifizierung nicht benötigt, und die Benutzerauthentifizierung erfolgt automatisch basierend auf dem Benutzernamen. Weitere Informationen finden Sie in der SSH-Dokumentation zur schlüsselbasierten Benutzerauthentifizierung.

Dies ist kein erforderlicher Parameter. Wenn kein UserName-Parameter angegeben wird, wird der aktuelle Anmeldebenutzername für die Verbindung verwendet.

Dieser Parameter wurde in PowerShell 6.0 eingeführt.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseSSL

Gibt an, dass dieses Cmdlet das SSL-Protokoll (Secure Sockets Layer) verwendet, um eine Verbindung mit dem Remotecomputer herzustellen. Standardmäßig wird SSL nicht verwendet.

WS-Management verschlüsselt alle PowerShell-Inhalte, die über das Netzwerk übertragen werden. Der UseSSL-Parameter ist ein zusätzlicher Schutz, der die Daten über eine HTTPS-Verbindung anstelle einer HTTP-Verbindung sendet.

Wenn Sie diesen Parameter verwenden, ssl jedoch nicht für den Port verfügbar ist, der für den Befehl verwendet wird, schlägt der Befehl fehl.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-VMId

Gibt die ID eines virtuellen Computers an.

Type:Guid
Aliases:VMGuid
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-VMName

Gibt den Namen eines virtuellen Computers an.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

Eingaben

String

Sie können einen Computernamen als Zeichenfolge an dieses Cmdlet übergeben.

PSSession

Sie können ein Sitzungsobjekt an dieses Cmdlet übergeben.

Ausgaben

None

Dieses Cmdlet gibt keine Ausgabe zurück.

Hinweise

PowerShell enthält die folgenden Aliase für Enter-PSSession:

  • Alle Plattformen:
    • etsn

Um eine Verbindung zu einem Remotecomputer herzustellen, müssen Sie Mitglied der Gruppe „Administratoren“ auf dem Remotecomputer sein. Um eine interaktive Sitzung auf dem lokalen Computer zu starten, müssen Sie PowerShell mit der Option Als Administrator ausführen starten.

Wenn Sie verwenden Enter-PSSession, wird Ihr Benutzerprofil auf dem Remotecomputer für die interaktive Sitzung verwendet. Die Befehle im Remotebenutzerprofil, einschließlich Der Befehle zum Hinzufügen von PowerShell-Modulen und zum Ändern der Eingabeaufforderung, werden ausgeführt, bevor die Remoteeingabeaufforderung angezeigt wird.

Enter-PSSession verwendet die Benutzeroberflächenkultureinstellung auf dem lokalen Computer für die interaktive Sitzung. Verwenden Sie die automatische Variable, um die $UICulture lokale Benutzeroberflächenkultur zu ermitteln.

Enter-PSSession erfordert die Get-CommandCmdlets , Out-Defaultund Exit-PSSession . Wenn diese Cmdlets nicht in der Sitzungskonfiguration auf dem Remotecomputer enthalten sind, tritt bei den Enter-PSSession Befehlen ein Fehler auf.

Im Gegensatz zu Invoke-Command, bei dem die Befehle analysiert und interpretiert werden, bevor sie an den Remotecomputer gesendet werden, Enter-PSSession werden die Befehle ohne Interpretation direkt an den Remotecomputer gesendet.

Wenn die Sitzung, die Sie eingeben möchten, mit der Verarbeitung eines Befehls beschäftigt ist, kann es zu einer Verzögerung kommen, bevor PowerShell auf den Enter-PSSession Befehl antwortet. Sie sind verbunden, sobald die Sitzung verfügbar ist. Drücken Sie STRG+C, um den Enter-PSSession Befehl abzubrechen.

Der Parametersatz HostName wurde ab PowerShell 6.0 eingeschlossen. Es wurde hinzugefügt, um PowerShell-Remoting basierend auf Secure Shell (SSH) bereitzustellen. Sowohl SSH als auch PowerShell werden auf mehreren Plattformen (Windows, Linux, macOS) unterstützt, und PowerShell-Remoting funktioniert über diese Plattformen, auf denen PowerShell und SSH installiert und konfiguriert sind. Dies ist getrennt vom vorherigen Windows-Remoting, das auf WinRM basiert, und viele der WinRM-spezifischen Features und Einschränkungen gelten nicht. WinRM-basierte Kontingente, Sitzungsoptionen, benutzerdefinierte Endpunktkonfiguration und Features zum Trennen/Wiederherstellen der Verbindung werden derzeit nicht unterstützt. Weitere Informationen zum Einrichten von PowerShell SSH-Remoting finden Sie unter PowerShell-Remoting über SSH.

Vor PowerShell 7.1 unterstützte das Remoting über SSH keine Remotesitzungen über einen zweiten Hop. Diese Funktion war auf Sitzungen beschränkt, die WinRM verwendeten. PowerShell 7.1 ermöglicht, dass Enter-PSSession und Enter-PSHostProcess in jeder interaktiven Remotesitzung funktionieren.

Die ssh ausführbare Datei ruft Konfigurationsdaten aus den folgenden Quellen in der folgenden Reihenfolge ab:

  1. Befehlszeilenoptionen
  2. Konfigurationsdatei des Benutzers (~/.ssh/config)
  3. systemweite Konfigurationsdatei (/etc/ssh/ssh_config)

Die folgenden Cmdlet-Parameter werden Parametern ssh und Optionen zugeordnet:

Cmdlet-Parameter ssh-Parameter entsprechende ssh-o-Option
-KeyFilePath -i <KeyFilePath> -o IdentityFile=<KeyFilePath>
-UserName -l <UserName> -o User=<UserName>
-Port -p <Port> -o Port=<Port>
-ComputerName -Subsystem -s <ComputerName> <Subsystem> -o Host=<ComputerName>

Alle von Parametern explizit übergebenen Werte haben Vorrang vor Werten, die in der Options-Hashtabelle übergeben werden. Weitere Informationen zu ssh_config Dateien finden Sie unter ssh_config(5).