New-PSSession

Erstellt eine permanente Verbindung mit einem lokalen Computer oder Remotecomputer.

Syntax

New-PSSession
   [[-ComputerName] <String[]>]
   [-Credential <PSCredential>]
   [-Name <String[]>]
   [-EnableNetworkAccess]
   [-ConfigurationName <String>]
   [-Port <Int32>]
   [-UseSSL]
   [-ApplicationName <String>]
   [-ThrottleLimit <Int32>]
   [-SessionOption <PSSessionOption>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [<CommonParameters>]
New-PSSession
   [-Credential <PSCredential>]
   [-Name <String[]>]
   [-EnableNetworkAccess]
   [-ConfigurationName <String>]
   [-ThrottleLimit <Int32>]
   [-ConnectionUri] <Uri[]>
   [-AllowRedirection]
   [-SessionOption <PSSessionOption>]
   [-Authentication <AuthenticationMechanism>]
   [-CertificateThumbprint <String>]
   [<CommonParameters>]
New-PSSession
   -Credential <PSCredential>
   [-Name <String[]>]
   [-ConfigurationName <String>]
   [-VMId] <Guid[]>
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]
New-PSSession
   -Credential <PSCredential>
   [-Name <String[]>]
   [-ConfigurationName <String>]
   -VMName <String[]>
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]
New-PSSession
   [[-Session] <PSSession[]>]
   [-Name <String[]>]
   [-EnableNetworkAccess]
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]
New-PSSession
   [-Name <String[]>]
   [-ConfigurationName <String>]
   -ContainerId <String[]>
   [-RunAsAdministrator]
   [-ThrottleLimit <Int32>]
   [<CommonParameters>]
New-PSSession
   -UseWindowsPowerShell
   [-Name <string[]>]
   [<CommonParameters>]
New-PSSession
   [-Name <String[]>]
   [-Port <Int32>]
   [-HostName] <String[]>
   [-UserName <String>]
   [-KeyFilePath <String>]
   [-SSHTransport]
   [-Subsystem <String>]
   [-ConnectingTimeout <int>]
   [<CommonParameters>]
New-PSSession
   [-Name <String[]>]
   -SSHConnection <Hashtable[]>
   [<CommonParameters>]

Beschreibung

Das New-PSSession Cmdlet erstellt eine PowerShell-Sitzung (PSSession) auf einem lokalen oder Remotecomputer. Wenn Sie eine PSSession erstellen, stellt PowerShell eine dauerhafte Verbindung mit dem Remotecomputer her.

Verwenden Sie eine PSSession , um mehrere Befehle auszuführen, die Daten freigeben, z. B. eine Funktion oder den Wert einer Variablen. Verwenden Sie das Invoke-Command Cmdlet, um Befehle in einer PSSession auszuführen. Wenn Sie die PSSession verwenden möchten, um direkt mit einem Remotecomputer zu interagieren, verwenden Sie das Enter-PSSession Cmdlet. Weitere Informationen finden Sie unter about_PSSessions.

Sie können Befehle auf einem Remotecomputer ausführen, ohne eine PSSession mit den ComputerName-ParameternEnter-PSSession oder Invoke-Command. Wenn Sie den Parameter ComputerName verwenden, erstellt PowerShell eine temporäre Verbindung, die für den Befehl verwendet wird, und wird dann geschlossen.

Ab PowerShell 6.0 können Sie secure Shell (SSH) verwenden, um eine Verbindung mit einem Remotecomputer herzustellen und eine Sitzung auf einem Remotecomputer zu erstellen, 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) funktionieren kann. Bei SSH-basierten Sitzungen verwenden Sie den Parameter HostName oder SSHConnection , um den Remotecomputer und relevante Verbindungsinformationen anzugeben. Weitere Informationen zum Einrichten von PowerShell SSH-Remoting finden Sie unter PowerShell Remoting Over SSH.

Hinweis

Wenn Sie WSMan-Remoting von einem Linux- oder macOS-Client mit einem HTTPS-Endpunkt verwenden, auf dem das Serverzertifikat nicht vertrauenswürdig ist (z. B. ein selbstsigniertes Zertifikat). Sie müssen eine PSSessionOption bereitstellen, die die Werte SkipCACheck und SkipCNCheck enthält, die auf $true die erfolgreiche Einrichtung der Verbindung festgelegt sind. Führen Sie dies nur aus, wenn Sie sich in einer Umgebung befinden, in der Sie sicher sein können, dass Sie das Serverzertifikat und die Netzwerkverbindung mit dem Zielsystem herstellen können.

Beispiele

Beispiel 1: Erstellen einer Sitzung auf dem lokalen Computer

$s = New-PSSession

Dieser Befehl erstellt einen neuen PSSession auf dem lokalen Computer und speichert die PSSession in der $s Variablen.

Sie können jetzt diese PSSession verwenden, um Befehle auf dem lokalen Computer auszuführen.

Beispiel 2: Erstellen einer Sitzung auf einem Remotecomputer

$Server01 = New-PSSession -ComputerName Server01

Dieser Befehl erstellt einen neuen PSSession auf dem Server01-Computer und speichert ihn in der $Server01 Variablen.

Weisen Sie beim Erstellen mehrerer PSSession-Objekte Variablen mit nützlichen Namen zu. Dadurch können Sie die PSSession-Objekte in nachfolgenden Befehlen verwalten.

Beispiel 3: Erstellen von Sitzungen auf mehreren Computern

$s1, $s2, $s3 = New-PSSession -ComputerName Server01,Server02,Server03

Dieser Befehl erstellt drei PSSession-Objekte , eine auf jedem der Computer, die vom ComputerName-Parameter angegeben werden.

Der Befehl verwendet den Zuordnungsoperator (=) zum Zuweisen der neuen PSSession-Objekte zu Variablen: $s1, , $s2$s3. Er weist server01 PSSession , $s1der Server02 PSSession zu $s2, und dem Server03 PSSession zu $s3.

Wenn Sie einer Reihe von Variablen mehrere Objekte zuweisen, weist PowerShell jedem Objekt eine Variable in der Datenreihe zu. Wenn es mehr Objekte als Variablen gibt, werden alle verbleibenden Objekte der letzten Variablen zugewiesen. Wenn mehr Variablen als Objekte vorhanden sind, sind die verbleibenden Variablen leer ($null).

Beispiel 4: Erstellen einer Sitzung mit einem angegebenen Port

New-PSSession -ComputerName Server01 -Port 8081 -UseSSL -ConfigurationName E12

Dieser Befehl erstellt einen neuen PSSession auf dem Server01-Computer, der eine Verbindung mit dem Serverport 8081 herstellt und das SSL-Protokoll verwendet. Die neue PSSession verwendet eine alternative Sitzungskonfiguration namens E12.

Bevor Sie den Port festlegen, müssen Sie den WinRM-Listener auf dem Remotecomputer zum Abhören von Port 8081 konfigurieren. Weitere Informationen finden Sie unter der Beschreibung des Port-Parameters.

Beispiel 5: Erstellen einer Sitzung basierend auf einer vorhandenen Sitzung

New-PSSession -Session $s -Credential Domain01\User01

Dieser Befehl erstellt eine PSSession mit den gleichen Eigenschaften wie eine vorhandene PSSession. Sie können dieses Befehlsformat verwenden, wenn die Ressourcen einer vorhandenen PSSession erschöpft sind und eine neue PSSession erforderlich ist, um einige der Nachfrage zu entladen.

Der Befehl verwendet den Parameter New-PSSession"Session", um die in der $s Variable gespeicherte PSSession anzugeben. Er verwendet die Anmeldeinformationen des Domain1\Admin01 Benutzers, um den Befehl abzuschließen.

Beispiel 6: Erstellen einer Sitzung mit einem globalen Bereich in einer anderen Domäne

$global:s = New-PSSession -ComputerName Server1.Domain44.Corpnet.Fabrikam.com -Credential Domain01\Admin01

In diesem Beispiel wird gezeigt, wie Sie eine PSSession mit einem globalen Bereich auf einem Computer in einer anderen Domäne erstellen.

Standardmäßig werden psSession-Objekte , die in der Befehlszeile erstellt wurden, mit lokalem Bereich erstellt, und PSSession-Objekte , die in einem Skript erstellt wurden, verfügen über Skriptbereich.

Um eine PSSession mit globalem Bereich zu erstellen, erstellen Sie eine neue PSSession , und speichern Sie dann die PSSession in einer Variablen, die in einen globalen Bereich verschoben wird. In diesem Fall wird die $s Variable in einen globalen Bereich umwandeln.

Der Befehl verwendet den ComputerName-Parameter, um den Remotecomputer anzugeben. Da sich der Computer in einer anderen Domäne als dem Benutzerkonto befindet, wird der vollständige Name des Computers zusammen mit den Anmeldeinformationen des Benutzers angegeben.

Beispiel 7: Erstellen von Sitzungen für viele Computer

$rs = Get-Content C:\Test\Servers.txt | New-PSSession -ThrottleLimit 50

Dieser Befehl erstellt eine PSSession auf jedem der in der Servers.txt Datei aufgeführten 200 Computer und speichert die resultierende PSSession in der $rs Variablen. Die PSSession-Objekte weisen eine Drosselungsgrenze auf 50.

Sie können dieses Befehlsformat verwenden, wenn die Namen von Computern in einer Datenbank, einer Kalkulationstabelle, einer Textdatei oder in einem anderen in Text konvertierbaren Format gespeichert sind.

Beispiel 8: Erstellen einer Sitzung mithilfe eines URI

$s = New-PSSession -URI http://Server01:91/NewSession -Credential Domain01\User01

Dieser Befehl erstellt eine PSSession auf dem Server01-Computer und speichert ihn in der $s Variablen. Er verwendet den URI-Parameter , um das Transportprotokoll, den Remotecomputer, den Port und eine alternative Sitzungskonfiguration anzugeben. Außerdem wird der Parameter "Anmeldeinformationen " verwendet, um ein Benutzerkonto anzugeben, das über die Berechtigung zum Erstellen einer Sitzung auf dem Remotecomputer verfügt.

Beispiel 9: Ausführen eines Hintergrundauftrags in einer Reihe von Sitzungen

$s = New-PSSession -ComputerName (Get-Content Servers.txt) -Credential Domain01\Admin01 -ThrottleLimit 16
Invoke-Command -Session $s -ScriptBlock {Get-Process PowerShell} -AsJob

Diese Befehle erstellen eine Reihe von PSSession-Objekten und führen dann einen Hintergrundauftrag in den einzelnen PSSession-Objekten aus.

Der erste Befehl erstellt eine neue PSSession auf jedem der computer, die in der Servers.txt Datei aufgeführt sind. Es verwendet das Cmdlet, um die New-PSSessionPSSession zu erstellen. Der Wert des ComputerName-Parameters ist ein Befehl, der das Get-Content Cmdlet verwendet, um die Liste der Computernamen abzurufen Servers.txt .

Der Befehl verwendet den Parameter Credential , um die PSSession-Objekte zu erstellen, die über die Berechtigung eines Domänenadministrators verfügen, und es verwendet den Parameter ThrottleLimit , um den Befehl auf 16 gleichzeitige Verbindungen zu beschränken. Der Befehl speichert die PSSession-Objekte in der $s Variablen.

Der zweite Befehl verwendet den AsJob-Parameter des Invoke-Command Cmdlets, um einen Hintergrundauftrag zu starten, der einen Get-Process PowerShell Befehl in jedem der PSSession-Objekte ausführt $s.

Weitere Informationen zu PowerShell-Hintergrundaufträgen finden Sie unter about_Jobs und about_Remote_Jobs.

Beispiel 10: Erstellen einer Sitzung für einen Computer mithilfe des URI

New-PSSession -ConnectionURI https://management.exchangelabs.com/Management

Dieser Befehl erstellt eine PSSession-Objekte , die eine Verbindung mit einem Computer herstellen, der von einem URI anstelle eines Computernamens angegeben wird.

Beispiel 11: Erstellen einer Sitzungsoption

$so = New-PSSessionOption -SkipCACheck
New-PSSession -ConnectionUri https://management.exchangelabs.com/Management -SessionOption $so -Credential Server01\Admin01

In diesem Beispiel wird gezeigt, wie Sie ein Sitzungsoptionsobjekt erstellen und den SessionOption-Parameter verwenden.

Der erste Befehl verwendet das New-PSSessionOption Cmdlet, um eine Sitzungsoption zu erstellen. Das resultierende SessionOption-Objekt wird in der $so Variablen gespeichert.

Der zweite Befehl verwendet die Option in einer neuen Sitzung. Der Befehl verwendet das New-PSSession Cmdlet, um eine neue Sitzung zu erstellen. Der Wert des SessionOption-Parameters ist das SessionOption-Objekt in der $so Variablen.

Beispiel 12: Erstellen einer Sitzung mit SSH

New-PSSession -HostName UserA@LinuxServer01

In diesem Beispiel wird gezeigt, wie Sie eine neue PSSession mit Secure Shell (SSH) erstellen. Wenn SSH auf dem Remotecomputer so konfiguriert ist, dass Sie zur Eingabe von Kennwörtern aufgefordert werden, erhalten Sie eine Kennwortaufforderung. Andernfalls müssen Sie die SSH-Schlüsselbasierte Benutzerauthentifizierung verwenden.

Beispiel 13: Erstellen einer Sitzung mit SSH und Angeben des Port- und Benutzerauthentifizierungsschlüssels

New-PSSession -HostName UserA@LinuxServer01:22 -KeyFilePath c:\<path>\userAKey_rsa

In diesem Beispiel wird gezeigt, wie Sie eine PSSession mit Secure Shell (SSH) erstellen. Er verwendet den Port-Parameter , um den zu verwendenden Port und den KeyFilePath-Parameter anzugeben, um einen RSA-Schlüssel anzugeben, der zum Identifizieren und Authentifizieren des Benutzers auf dem Remotecomputer verwendet wird.

Beispiel 14: Erstellen mehrerer Sitzungen mit SSH

$sshConnections = @(
    @{
          HostName    = 'WinServer1'
          UserName    = 'domain\userA'
          KeyFilePath = 'c:\users\UserA\id_rsa'
    }
    @{
        HostName    = 'UserB@LinuxServer5'
        KeyFilePath = 'c:\UserB\<path>\id_rsa'
    }
)
New-PSSession -SSHConnection $sshConnections

In diesem Beispiel wird gezeigt, wie Sie mehrere Sitzungen mit Secure Shell (SSH) und dem SSHConnection-Parametersatz erstellen. Der SSHConnection-Parameter verwendet ein Array von Hashtabellen, die Verbindungsinformationen für jede Sitzung enthalten. Beachten Sie, dass dieses Beispiel erfordert, dass die Ziel-Remotecomputer SSH konfiguriert haben, um die schlüsselbasierte Benutzerauthentifizierung zu unterstützen.

Parameter

-AllowRedirection

Gibt an, dass dieses Cmdlet die Umleitung dieser Verbindung zu einem alternativen Uniform Resource Identifier (URI) ermöglicht.

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 umleiten zu können.

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 Cmdlets oder legen Sie die MaximumConnectionRedirectionCount-Eigenschaft der New-PSSessionOption$PSSessionOption Einstellungsvariable fest. Standardwert: 5.

Type:SwitchParameter
Position:Named
Default value:None
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, lautet WSMANder Standardwert . Dieser Wert ist für die meisten Verwendungsarten geeignet. Weitere Informationen finden Sie unter about_Preference_Variables.

Der WinRM-Dienst wählt mit dem Anwendungsnamen einen Listener für die Verbindungsanforderung aus. Der Wert dieses Parameters sollte mit dem Wert der URLPrefix-Eigenschaft eines Listeners auf dem Remotecomputer übereinstimmen.

Type:String
Position:Named
Default value:None
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:

  • Default
  • Basic
  • Credssp
  • Digest
  • Kerberos
  • Negotiate
  • NegotiateWithImplicitCredential

Standardwert: Default.

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

Achtung

Die Credential Security Support Provider (CredSSP)-Authentifizierung, in der die Benutzeranmeldeinformationen an einen Remotecomputer übergeben werden, der authentifiziert werden soll, ist für Befehle konzipiert, die die Authentifizierung auf mehreren Ressourcen erfordern, z. B. auf einen Remotenetzwerkfreigabe zugreifen. 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
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.

Um ein Zertifikat abzurufen, verwenden Sie den Get-ItemGet-ChildItem Befehl oder den Befehl im PowerShell-Laufwerk Cert: .

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

-ComputerName

Gibt ein Array von Namen von Computern an. Dieses Cmdlet erstellt eine persistente Verbindung (PSSession) mit dem angegebenen Computer. Wenn Sie mehrere Computernamen eingeben, werden mehrere PSSession-Objekte erstellt, New-PSSession eine für jeden Computer. Die Standardeinstellung ist der lokale Computer.

Geben Sie den NetBIOS-Namen, eine IP-Adresse oder den vollqualifizierten Domänennamen mindestens eines Computers ein. Geben Sie zum Angeben des lokalen Computers den Computernamen oder localhosteinen Punkt (.) ein. Wenn sich der Remotecomputer in einer anderen Domäne als der Benutzer befindet, ist der vollqualifizierte Domänenname erforderlich. Sie können auch einen Computernamen, in Anführungszeichen, an New-PSSession.

Um eine IP-Adresse im Wert des ComputerName-Parameters zu verwenden, muss der Befehl den Parameter "Anmeldeinformationen " 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 Liste "TrustedHosts" finden Sie in about_Remote_Troubleshooting unter "Hinzufügen eines Computers zur vertrauenswürdigen Hostliste".

Um den lokalen Computer im Wert des ComputerName-Parameters einzuschließen, starten Sie Windows PowerShell mithilfe der Option "Als Administrator ausführen".

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

-ConfigurationName

Gibt die Sitzungskonfiguration an, die für die neue PSSession verwendet wird.

Geben Sie einen Konfigurationsnamen oder den vollqualifizierten Ressourcen-URI für eine Sitzungskonfiguration ein. Wenn Sie nur den Konfigurationsnamen angeben, wird der folgende Schema-URI vorgestellt: http://schemas.microsoft.com/PowerShell

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 Microsoft.PowerShellder Standardwert . Weitere Informationen finden Sie unter about_Preference_Variables.

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

-ConnectingTimeout

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

Dieser Parameter wurde in PowerShell 7.2 eingeführt.

Type:Int32
Position:Named
Default value:unlimited
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 mit Standardsports erstellt: 80 für HTTP und 443 für HTTPS. Um die Standardports für PowerShell-Remoting zu verwenden, geben Sie den Port 5985 für HTTP oder 5986 für HTTPS an.

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

Type:Uri[]
Aliases:URI, CU
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

-ContainerId

Gibt ein Array von IDs von Containern an. Dieses Cmdlet startet eine interaktive Sitzung mit jedem der angegebenen Container. Verwenden Sie den docker ps Befehl, um eine Liste der Container-IDs abzurufen. Weitere Informationen finden Sie in der Hilfe zum Docker ps-Befehl .

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

-Credential

Gibt ein Benutzerkonto an, das über die Berechtigung für diese Aktion verfügt. Der Standardwert ist der aktuelle Benutzer.

Geben Sie einen Benutzernamen ein, zUser01. B. oder Domain01\User01geben Sie ein vom Cmdlet generiertes Get-CredentialPSCredential-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 SecureString-Datenschutz finden Sie unter Wie sicher ist SecureString?.

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

-EnableNetworkAccess

Gibt an, dass dieses Cmdlet ein interaktives Sicherheitstoken zu Loopbacksitzungen 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 stammt und endet. Um eine Loopbacksitzung zu erstellen, müssen Sie den ComputerName-Parameter auslassen oder den Wert auf Punkt (.) localhostfestlegen oder den Namen des lokalen Computers festlegen.

Standardmäßig erstellt dieses Cmdlet Loopbacksitzungen mithilfe eines Netzwerktokens, das möglicherweise keine ausreichende Berechtigung zum Authentifizieren bei Remotecomputern bereitstellt.

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

Sie können den Remotezugriff auch in einer Loopbacksitzung aktivieren, indem Sie den CredSSP Wert des Authentifizierungsparameters verwenden, der die Sitzungsanmeldeinformationen an andere Computer delegiert.

Um den Computer vor böswilligem Zugriff zu schützen, können getrennte Loopbacksitzungen mit interaktiven Token, die mithilfe des EnableNetworkAccess-Parameters erstellt wurden, nur von dem Computer erneut verbunden werden, auf dem die Sitzung erstellt wurde. Die Verbindung von getrennten Sitzungen, die die CredSSP-Authentifizierung verwenden, kann von anderen Computern wiederhergestellt werden. Weitere Informationen finden Sie unter Disconnect-PSSession.

Dieser Parameter wurde in PowerShell 3.0 eingeführt.

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

-HostName

Gibt ein Array von Computernamen für eine secure Shell (SSH) basierte Verbindung an. Dies ähnelt dem ComputerName-Parameter , mit der Ausnahme, dass die Verbindung mit dem Remotecomputer über SSH anstelle von Windows WinRM hergestellt wird.

Dieser Parameter wurde in PowerShell 6.0 eingeführt.

Type:String[]
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-KeyFilePath

Gibt einen Schlüsseldateipfad an, der von Secure Shell (SSH) verwendet wird, um einen Benutzer auf einem Remotecomputer zu authentifizieren.

SSH ermöglicht die Benutzerauthentifizierung über private/öffentliche Schlüssel als Alternative zur grundlegenden 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
Accept pipeline input:False
Accept wildcard characters:False

-Name

Gibt einen Anzeigenamen für die PSSession an.

Sie können den Namen verwenden, um auf die PSSession zu verweisen, wenn Sie andere Cmdlets wie z Get-PSSession . B. und Enter-PSSession. Der Name muss für den Computer oder die aktuelle Sitzung nicht eindeutig sein.

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

-Port

Gibt den Netzwerkport an dem für diese Verbindung verwendeten Remotecomputer an. Zum Herstellen einer Verbindung mit einem Remotecomputer muss der Remotecomputer den für die Verbindung verwendeten Port abhören. Die Standardports sind 5985, das ist der WinRM-Port für HTTP und 5986, das ist der WinRM-Port für HTTPS.

Bevor Sie einen anderen Port verwenden, müssen Sie den WinRM-Listener auf dem Remotecomputer so konfigurieren, dass er an diesem Port lauscht. 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.

Type:Int32
Position:Named
Default value:None
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:None
Accept pipeline input:False
Accept wildcard characters:False

-Session

Gibt ein Array von PSSession-Objekten an, das dieses Cmdlet als Modell für die neue PSSession verwendet. Dieser Parameter erstellt neue PSSession-Objekte mit den gleichen Eigenschaften wie die angegebenen PSSession-Objekte .

Geben Sie eine Variable ein, die die PSSession-Objekte oder einen Befehl enthält, der die PSSession-Objekte erstellt oder abruft, z. B. einen New-PSSession oder Get-PSSession Befehl.

Die resultierenden PSSession-Objekte weisen denselben Computernamen, Anwendungsnamen, Verbindungs-URI, Port, Konfigurationsname, Drosselungsgrenzwert und SSL-Wert (Secure Sockets Layer) wie die Originale auf, weisen jedoch einen anderen Anzeigenamen, die ID und die Instanz-ID (GUID) auf.

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

-SessionOption

Gibt erweiterte Optionen für die Sitzung an. 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 $PSSessionOption Einstellungsvariable 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, die die Standardwerte enthalten, finden Sie unter New-PSSessionOption. Informationen zur $PSSessionOption Einstellungsvariable finden Sie unter about_Preference_Variables. Weitere Informationen zu Sitzungskonfigurationen finden Sie unter about_Session_Configurations.

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

-SSHConnection

Dieser Parameter verwendet ein Array von Hashtables, bei dem jede Hashtable einen oder mehrere Verbindungsparameter enthält, die zum Herstellen einer SSH-Verbindung (Secure Shell) (HostName, Port, UserName, KeyFilePath) erforderlich sind.

Die Hashtable-Verbindungsparameter sind identisch mit der Definition für den SSHHost-Parametersatz .

Der SSHConnection-Parameter ist hilfreich für das Erstellen mehrerer Sitzungen, bei denen jede Sitzung unterschiedliche Verbindungsinformationen erfordert.

Dieser Parameter wurde in PowerShell 6.0 eingeführt.

Type:Hashtable[]
Position:Named
Default value:None
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 erzwingt PowerShell, den HostName-Parameter für die Einrichtung einer SSH-basierten Remoteverbindung zu verwenden.

Dieser Parameter wurde in PowerShell 6.0 eingeführt.

Type:SwitchParameter
Accepted values:true
Position:Named
Default value:None
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. Das Subsystem startet eine bestimmte Version von PowerShell mit vordefinierten Parametern. Wenn das angegebene Subsystem nicht auf dem Remotecomputer 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
Accept pipeline input:True
Accept wildcard characters:False

-ThrottleLimit

Gibt die maximale Anzahl von gleichzeitigen Verbindungen an, die zum Ausführen dieses Befehls hergestellt werden können. Wenn Sie diesen Parameter auslassen oder einen Wert von 0 (Null) eingeben, wird der Standardwert 32verwendet.

Die Drosselungsgrenze gilt nur für den aktuellen Befehl und nicht für die Sitzung oder den Computer.

Type:Int32
Position:Named
Default value:None
Accept pipeline input:False
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 ist.

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 bereitgestellt werden, und Sie werden nicht zur Eingabe eines Kennworts aufgefordert. Beachten Sie, dass, wenn sich die Clientbenutzerschlüsseldatei an einem bekannten SSH-Speicherort befindet, der KeyFilePath-Parameter für die schlüsselbasierte Authentifizierung nicht benötigt wird, 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 Anmeldename für die Verbindung verwendet.

Dieser Parameter wurde in PowerShell 6.0 eingeführt.

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

-UseSSL

Gibt an, dass dieses Cmdlet das SSL-Protokoll 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 bietet einen zusätzlichen 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:None
Accept pipeline input:False
Accept wildcard characters:False

-UseWindowsPowerShell

Erstellt eine Remoteverbindung mit einem neuen Windows PowerShell Runspace im lokalen System.

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

-VMId

Gibt ein Array von virtuellen Computer-IDs an. Dieses Cmdlet startet eine interaktive Sitzung mit jedem der angegebenen virtuellen Computer. Verwenden Sie den folgenden Befehl, um die für Sie verfügbaren virtuellen Computer anzuzeigen:

Get-VM | Select-Object -Property Name, ID

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

-VMName

Gibt ein Array von Namen von virtuellen Computern an. Dieses Cmdlet startet eine interaktive Sitzung mit jedem der angegebenen virtuellen Computer. Verwenden Sie das Get-VM Cmdlet, um die virtuellen Computer anzuzeigen, die ihnen zur Verfügung stehen.

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

Eingaben

System.String, System.URI, System.Management.Automation.Runspaces.PSSession

Sie können eine Zeichenfolge, einen URI oder ein Sitzungsobjekt an dieses Cmdlet weiterleiten.

Ausgaben

PSSession

Hinweise

  • Dieses Cmdlet verwendet die PowerShell-Remoting-Infrastruktur. Um dieses Cmdlet zu verwenden, muss der lokale Computer und alle Remotecomputer für PowerShell-Remoting konfiguriert werden. Weitere Informationen finden Sie unter about_Remote_Requirements.
  • Um eine PSSession auf dem lokalen Computer zu erstellen, starten Sie PowerShell mit der Option "Als Administrator ausführen ".
  • Wenn Sie mit der PSSession fertig sind, verwenden Sie das Cmdlet, um die Remove-PSSessionPSSession zu löschen und seine Ressourcen zu veröffentlichen.
  • Die Parametersätze "HostName " und " SSHConnection " wurden ab PowerShell 6.0 enthalten. Sie wurden hinzugefügt, um PowerShell-Remoting basierend auf Secure Shell (SSH) bereitzustellen. Sowohl SSH als auch PowerShell werden auf mehreren Plattformen (Windows, Linux, macOS) und PowerShell-Remoting über diese Plattformen unterstützt, auf denen PowerShell und SSH installiert und konfiguriert sind. Dies unterscheidet sich von der vorherigen Windows-only-Remoting, die auf WinRM basiert und viele der winRM-spezifischen Features und Einschränkungen gelten nicht. Beispielsweise werden winRM-basierte Kontingente, Sitzungsoptionen, benutzerdefinierte Endpunktkonfiguration und Verbindungsfeatures nicht unterstützt. Weitere Informationen zum Einrichten von PowerShell SSH-Remoting finden Sie unter PowerShell Remoting Over SSH.

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 Cmdletparameter werden in ssh Parameter 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>

Weitere Informationen zu ssh_config Dateien finden Sie unter ssh_config(5).