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
[-Name <String[]>]
[-UseWindowsPowerShell]
[<CommonParameters>]
New-PSSession
[-Name <String[]>]
[-Port <Int32>]
[-HostName] <String[]>
[-UserName <String>]
[-KeyFilePath <String>]
[-Subsystem <String>]
[-ConnectingTimeout <Int32>]
[-SSHTransport]
[-Options <Hashtable>]
[<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 gemeinsam nutzen, z. B. eine Funktion oder den Wert einer Variablen. Verwenden Sie das Invoke-Command
Cmdlet, um Befehle in einer PSSession auszuführen. Verwenden Sie das Cmdlet, um die PSSession für die Enter-PSSession
direkte Interaktion mit einem Remotecomputer zu verwenden. Weitere Informationen finden Sie unter about_PSSessions.
Sie können Befehle auf einem Remotecomputer ausführen, ohne eine PSSession mit den ComputerName-Parametern oder Enter-PSSession
Invoke-Command
zu erstellen. Wenn Sie den Parameter ComputerName verwenden, erstellt PowerShell eine temporäre Verbindung, die für den Befehl verwendet wird und dann geschlossen wird.
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. Für SSH-basierte Sitzungen verwenden Sie den Parameter "HostName " oder "SSHConnection ", um den Remotecomputer und die relevanten Verbindungsinformationen anzugeben. Weitere Informationen zum Einrichten von PowerShell SSH-Remoting finden Sie unter PowerShell-Remoting über SSH.
Hinweis
Bei Verwendung von WSMan-Remoting von einem Linux- oder macOS-Client mit einem HTTPS-Endpunkt, bei 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
festgelegt sind, um die Verbindung erfolgreich herzustellen. Tun Sie dies nur, wenn Sie sich in einer Umgebung befinden, in der Sie sicher sein können, ob das Serverzertifikat und die Netzwerkverbindung mit dem Zielsystem besteht.
Beispiele
Beispiel 1: Create einer Sitzung auf dem lokalen Computer
$s = New-PSSession
Dieser Befehl erstellt eine neue PSSession auf dem lokalen Computer und speichert die PSSession in der $s
Variablen.
Sie können diese PSSession jetzt verwenden, um Befehle auf dem lokalen Computer auszuführen.
Beispiel 2: Create einer Sitzung auf einem Remotecomputer
$Server01 = New-PSSession -ComputerName Server01
Dieser Befehl erstellt eine neue PSSession auf dem Server01-Computer und speichert sie 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: Create Sitzungen auf mehreren Computern
$s1, $s2, $s3 = New-PSSession -ComputerName Server01,Server02,Server03
Mit diesem Befehl werden drei PSSession-Objekte erstellt, eines auf jedem der durch den ComputerName-Parameter angegebenen Computer.
Der Befehl verwendet den Zuweisungsoperator (=
), um die neuen PSSession-Objekte Variablen zuzuweisen: $s1
, $s2
, $s3
. Sie weist die Server01 PSSession zu $s1
, die Server02 PSSession zu $s2
und die Server03 PSSession zu $s3
.
Wenn Sie einer Reihe von Variablen mehrere Objekte zuweisen, weist PowerShell jedes Objekt jeweils einer Variablen in der Reihe 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: Create einer Sitzung mit einem angegebenen Port
New-PSSession -ComputerName Server01 -Port 8081 -UseSSL -ConfigurationName E12
Dieser Befehl erstellt eine neue 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: Create 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 einen Teil der Nachfrage auszulagern.
Der Befehl verwendet den Session-Parameter vonNew-PSSession
, um die in der $s
Variablen gespeicherte PSSession anzugeben. Es verwendet die Anmeldeinformationen des Domain1\Admin01
Benutzers, um den Befehl auszuführen.
Beispiel 6: Create 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 über die Befehlszeile erstellt werden, mit lokalem Bereich erstellt, und PSSession-Objekte , die in einem Skript erstellt werden, haben einen Skriptbereich.
Um eine PSSession mit globalem Bereich zu erstellen, erstellen Sie eine neue PSSession , und speichern Sie die PSSession dann in einer Variablen, die in einen globalen Bereich umgewandelt wird. In diesem Fall wird die $s
Variable in einen globalen Bereich umgewandelt.
Der Befehl verwendet den ComputerName-Parameter, um den Remotecomputer anzugeben. Da sich der Computer in einer anderen Domäne als das Benutzerkonto befindet, wird der vollständige Name des Computers zusammen mit den Anmeldeinformationen des Benutzers angegeben.
Beispiel 7: Create Sitzungen für viele Computer
$rs = Get-Content C:\Test\Servers.txt | New-PSSession -ThrottleLimit 50
Dieser Befehl erstellt eine PSSession auf jedem der 200 Computer, die in der Servers.txt
Datei aufgeführt sind, und speichert die resultierende PSSession in der $rs
Variablen. Die PSSession-Objekte haben eine Drosselungsgrenze von 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: Create 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 sie in der $s
Variablen. Es verwendet den URI-Parameter , um das Transportprotokoll, den Remotecomputer, den Port und eine alternative Sitzungskonfiguration anzugeben. Außerdem wird der Credential-Parameter 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 jedem der PSSession-Objekte aus.
Mit dem ersten Befehl wird auf jedem der in der Servers.txt
Datei aufgeführten Computer eine neue PSSession erstellt. Es verwendet das New-PSSession
Cmdlet, um die PSSession zu erstellen. Der Wert des Parameters ComputerName ist ein Befehl, der das Get-Content
Cmdlet verwendet, um die Liste der Computernamen der Servers.txt
Datei abzurufen.
Der Befehl verwendet den Credential-Parameter , um die PSSession-Objekte zu erstellen, die über die Berechtigung eines Domänenadministrators verfügen, und er verwendet den ThrottleLimit-Parameter , um den Befehl auf gleichzeitige Verbindungen zu 16
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 psSession-Objekt in $s
ausführt.
Weitere Informationen zu PowerShell-Hintergrundaufträgen finden Sie unter about_Jobs und about_Remote_Jobs.
Beispiel 10: Create einer Sitzung für einen Computer mithilfe des uri
New-PSSession -ConnectionURI https://management.exchangelabs.com/Management
Dieser Befehl erstellt ein PSSession-Objekt , das eine Verbindung mit einem Computer herstellt, der durch einen URI anstelle eines Computernamens angegeben wird.
Beispiel 11: Create 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: Create einer Sitzung mithilfe von SSH
New-PSSession -HostName UserA@LinuxServer01
In diesem Beispiel wird gezeigt, wie Sie mithilfe von Secure Shell (SSH) eine neue PSSession erstellen. Wenn SSH auf dem Remotecomputer konfiguriert ist, um zur Eingabe von Kennwörtern aufzufordern, erhalten Sie eine Kennworteingabeaufforderung. Andernfalls müssen Sie die SSH-Schlüsselbasierte Benutzerauthentifizierung verwenden.
Beispiel 13: Create einer Sitzung mithilfe von 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. Es verwendet den Port-Parameter , um den zu verwendenden Port anzugeben, und den KeyFilePath-Parameter , um einen RSA-Schlüssel anzugeben, der zum Identifizieren und Authentifizieren des Benutzers auf dem Remotecomputer verwendet wird.
Beispiel 14: Create mehrerer Sitzungen mithilfe von 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 für dieses Beispiel erforderlich ist, dass auf den Ziel-Remotecomputern SSH zur Unterstützung der schlüsselbasierten Benutzerauthentifizierung konfiguriert ist.
Beispiel 15: Create einer neuen Sitzung mithilfe von SSH-Optionen
$options = @{
Port=22
User = 'UserB'
Host = 'LinuxServer5'
}
New-PSSession -KeyFilePath '/Users/UserB/id_rsa' -Options $options
In diesem Beispiel wird gezeigt, wie Sie eine neue SSH-basierte Sitzung auf einem Linux-Remotecomputer mithilfe von SSH-Optionen erstellen. 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
Gibt an, dass dieses Cmdlet die Umleitung dieser Verbindung zu einem alternativen URI (Uniform Resource Identifier) zulässt.
Bei Verwendung des ConnectionURI-Parameters kann das Remoteziel eine Anweisung zum Umleiten an einen anderen URI zurückgeben. Standardmäßig leitet PowerShell verbindungen nicht 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. Standardwert: 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 WSMAN
der 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 |
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:
Default
Basic
Credssp
Digest
Kerberos
Negotiate
NegotiateWithImplicitCredential
Standardwert: Default
.
Weitere Informationen zu den Werten dieses Parameters finden Sie unter AuthenticationMechanism Enumeration.
Achtung
Die CredSSP-Authentifizierung (Credential Security Support Provider), bei der die Benutzeranmeldeinformationen an einen Remotecomputer zur Authentifizierung übergeben werden, ist für Befehle konzipiert, die eine Authentifizierung für mehrere Ressourcen erfordern, z. B. den 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
auf dem PowerShell-Laufwerk Cert:
.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ComputerName
Gibt ein Array von Namen von Computern an. Dieses Cmdlet erstellt eine dauerhafte Verbindung (PSSession) mit dem angegebenen Computer. Wenn Sie mehrere Computernamen eingeben, New-PSSession
werden mehrere PSSession-Objekte erstellt, eines 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 localhost
einen 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 übergeben New-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.
Um den lokalen Computer in den Wert des ComputerName-Parameters einzubeziehen, starten Sie Windows PowerShell mithilfe der Option Als Administrator ausführen.
Type: | String[] |
Aliases: | Cn |
Position: | 0 |
Default value: | None |
Required: | False |
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 dem folgenden Schema-URI vorangestellt: 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.PowerShell
der Standardwert . 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 mit 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: | 0 |
Default value: | None |
Required: | True |
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 mit Container-IDs abzurufen. Weitere Informationen finden Sie in der Hilfe zum Befehl docker ps .
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | True |
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\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: | Named |
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 Punkt (.
), localhost
oder den Namen des lokalen Computers fest.
Standardmäßig erstellt dieses Cmdlet Loopbacksitzungen mithilfe eines Netzwerktokens, das möglicherweise keine ausreichende Berechtigung zur Authentifizierung bei Remotecomputern bereitstellt.
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 den Remotezugriff auch in einer Loopbacksitzung aktivieren, indem Sie den CredSSP
Wert des Authentication-Parameters verwenden, der die Sitzungsanmeldeinformationen an andere Computer delegiert.
Um den Computer vor böswilligem Zugriff zu schützen, können getrennte Loopbacksitzungen, die über interaktive Token verfügen, die mithilfe des EnableNetworkAccess-Parameters erstellt wurden, nur von dem Computer wiederhergestellt 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: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-HostName
Gibt ein Array von 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 wurde in PowerShell 6.0 eingeführt.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
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 einen Anzeigenamen für die PSSession an.
Sie können den Namen verwenden, um auf die PSSession zu verweisen, wenn Sie andere Cmdlets wie Get-PSSession
und Enter-PSSession
verwenden. Der Name muss für den Computer oder die aktuelle Sitzung nicht eindeutig sein.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
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 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
, wobei es sich um den WinRM-Port für HTTP handelt, und 5986
um den 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:
winrm delete winrm/config/listener?Address=*+Transport=HTTP
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 |
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 ein Array von PSSession-Objekten an, das dieses Cmdlet als Modell für die neue PSSession verwendet. Mit diesem Parameter werden neue PSSession-Objekte erstellt, die dieselben Eigenschaften wie die angegebenen PSSession-Objekte aufweisen.
Geben Sie eine Variable ein, die die PSSession-Objekte enthält, oder einen Befehl, mit dem die PSSession-Objekte erstellt oder abgerufen werden, z. B. ein New-PSSession
- oder Get-PSSession
-Befehl.
Die resultierenden PSSession-Objekte haben denselben Computernamen, Anwendungsnamen, Verbindungs-URI, Port, Konfigurationsnamen, Drosselungslimit und SSL-Wert (Secure Sockets Layer) wie die originalen Werte, aber sie verfügen über einen anderen Anzeigenamen, eine andere ID und instance ID (GUID).
Type: | PSSession[] |
Position: | 0 |
Default value: | None |
Required: | False |
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 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, die die Standardwerte enthalten, 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 |
-SSHConnection
Dieser Parameter verwendet ein Array von Hashtabellen, bei denen jede Hashtabelle einen oder mehrere Verbindungsparameter enthält, die zum Herstellen einer SSH-Verbindung (Secure Shell) erforderlich sind (HostName, Port, UserName, KeyFilePath).
Die Verbindungsparameter der Hashtabelle sind mit den für den SSHHost-Parametersatz definierten parametern identisch.
Der SSHConnection-Parameter ist nützlich, um mehrere Sitzungen zu erstellen, bei denen jede Sitzung unterschiedliche Verbindungsinformationen erfordert.
Dieser Parameter wurde in PowerShell 6.0 eingeführt.
Type: | Hashtable[] |
Position: | Named |
Default value: | None |
Required: | True |
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 |
-ThrottleLimit
Gibt die maximale Anzahl von gleichzeitigen Verbindungen an, die zum Ausführen dieses Befehls hergestellt werden können.
Wenn Sie diesen Parameter weglassen oder einen Wert von 0
(null) eingeben, 32
wird der Standardwert verwendet.
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 |
Required: | False |
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 wird.
Wenn SSH für die einfache 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 Sie werden nicht zur Eingabe eines Kennworts aufgefordert. 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 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: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseWindowsPowerShell
Erstellt eine Remoteverbindung mit einem neuen Windows PowerShell Runspace auf dem lokalen System.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-VMId
Gibt ein Array von VM-IDs an. Dieses Cmdlet startet eine interaktive PowerShell Direct-Sitzung mit jedem der angegebenen virtuellen Computer. Weitere Informationen finden Sie unter Automatisierung und Verwaltung virtueller Computer mit PowerShell.
Verwenden Sie Get-VM
, um die virtuellen Computer anzuzeigen, die auf Ihrem Hyper-V-Host verfügbar sind.
Type: | Guid[] |
Aliases: | VMGuid |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-VMName
Gibt ein Array von Namen von virtuellen Computern an. Dieses Cmdlet startet eine interaktive PowerShell Direct-Sitzung mit jedem der angegebenen virtuellen Computer. Weitere Informationen finden Sie unter Automatisierung und Verwaltung virtueller Computer mit PowerShell.
Verwenden Sie Get-VM
, um die virtuellen Computer anzuzeigen, die auf Ihrem Hyper-V-Host verfügbar sind.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Eingaben
Sie können eine Zeichenfolge an dieses Cmdlet übergeben.
System.URI
Sie können einen URI an dieses Cmdlet übergeben.
Sie können ein Sitzungsobjekt an dieses Cmdlet übergeben.
Ausgaben
Hinweise
PowerShell enthält die folgenden Aliase für New-PSSession
:
Alle Plattformen:
nsn
Dieses Cmdlet verwendet die PowerShell-Remotinginfrastruktur. Um dieses Cmdlet verwenden zu können, müssen 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
Remove-PSSession
Cmdlet, um die PSSession zu löschen und die Ressourcen freizugeben.Die Parametersätze HostName und SSHConnection waren 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) unterstützt. PowerShell-Remoting funktioniert über diese Plattformen, auf denen PowerShell und SSH installiert und konfiguriert sind. Dies ist getrennt von dem vorherigen reinen Windows-Remoting, das auf WinRM basiert, und viele der WinRM-spezifischen Features und Einschränkungen gelten nicht. Beispielsweise werden WinRM-basierte Kontingente, Sitzungsoptionen, benutzerdefinierte Endpunktkonfiguration und Features zum Trennen/Wiederverbinden nicht unterstützt. Weitere Informationen zum Einrichten von PowerShell SSH-Remoting finden Sie unter PowerShell-Remoting über SSH.
Die ssh
ausführbare Datei ruft Konfigurationsdaten aus den folgenden Quellen in der folgenden Reihenfolge ab:
- Befehlszeilenoptionen
- Konfigurationsdatei des Benutzers (~/.ssh/config)
- systemweite Konfigurationsdatei (/etc/ssh/ssh_config)
Die folgenden Cmdletparameter werden Parametern und Optionen zugeordnet ssh
:
Cmdlet-Parameter | SSH-Parameter | entsprechende SSH-Option "-o" |
---|---|---|
-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 Werte, die explizit von Parametern übergeben werden, haben Vorrang vor Werten, die in der Hashtabelle Optionen übergeben werden. Weitere Informationen zu ssh_config
Dateien finden Sie unter ssh_config(5).