Erstellen und Verwalten von dauerhaften PSSessions mithilfe von Windows PowerShell

Abgeschlossen 100 XP

Sie verwenden den Befehl New-PSSession, um eine dauerhafte Verbindung herzustellen. Der Befehl enthält viele der gleichen Parameter wie Invoke-Command, einschließlich -Credential, –Port und –UseSSL. Das liegt daran, dass Sie eine Verbindung herstellen, die mit der von Invoke-Command erstellten Verbindung identisch ist. Anstatt diese Verbindung jedoch sofort zu schließen, lassen Sie sie laufen.

PowerShell-Sitzungen haben ein Leerlauftimeout, nach dem der Remotecomputer sie automatisch schließt. Eine geschlossene PowerShell-Sitzung unterscheidet sich von einer getrennten PowerShell-Sitzung, da geschlossene PowerShell-Sitzungen nicht erneut verbunden werden können. In diesem Fall können Sie die PowerShell-Sitzung nur entfernen und dann neu erstellen.

New-PSSession kann mehrere Computernamen akzeptieren, wodurch mehrere PowerShell-Sitzungsobjekte erstellt werden. Wenn Sie den Befehl New-PSSession ausführen, werden Objekte ausgegeben, die die neu erstellten PowerShell-Sitzungen darstellen. Sie können diese PowerShell-Sitzungen einer Variablen zuweisen, um einfacher auf sie verweisen und sie in Zukunft verwenden zu können.

Sie können eine PowerShell-Sitzung sofort nach der Erstellung verwenden. Sowohl der Befehl Invoke-Command als auch der Befehl Enter-PSSession kann ein PowerShell-Sitzungsobjekt anstelle eines Computernamens akzeptieren. Invoke-Command kann mehrere PowerShell-Sitzungsobjekte akzeptieren. Zu diesem Zweck verwenden Sie den Parameter –Session des Befehls. Wenn Sie diesen Parameter nutzen, verwenden die Befehle die vorhandene PowerShell-Sitzung, anstatt eine neue Verbindung zu erstellen. Wenn die Ausführung des Befehls abgeschlossen ist oder Sie die PowerShell-Sitzung beenden, wird die PowerShell-Sitzung weiterhin ausgeführt, bleibt verbunden und kann weiterhin verwendet werden.

Sie können beispielsweise die folgenden Befehle verwenden, um einer PowerShell-Sitzung auf LON-CL1 beizutreten und sie dann zu schließen:

PowerShell
$client = New-PSSession –ComputerName LON-CL1
Enter-PSSession –Session $client
Exit-PSSession

Alternativ können Sie die folgenden Befehle verwenden, um dieselben Ergebnisse zu erzielen:

PowerShell
$computers = New-PSSession –ComputerName LON-CL1,LON-DC1
Invoke-Command –Session $computers –ScriptBlock { Get-Process }

Beispielsweise kann der folgende Befehl die Variable $dc verwenden, um eine PowerShell-Sitzung auf LON-DC1 innerhalb eines Skripts oder Codeblocks zu öffnen:

PowerShell
$dc = New-PSSession –ComputerName LON-DC1

Mit dem folgenden Befehl werden Remotesitzungen auf Server01 und Server02 erstellt, und die Sitzungsobjekte werden in der Variablen $s gespeichert:

PowerShell
$s = New-PSSession -ComputerName Server01, Server02

Nachdem die Sitzungen nun hergestellt sind, können Sie jeden beliebigen Befehl in diesen ausführen. Und da die Sitzungen permanent sind, können Sie Daten von einem Befehl sammeln und in einem anderen Befehl verwenden.

Beispielsweise führt der folgende Befehl einen Get-HotFix-Befehl in den Sitzungen in der Variablen $s aus und speichert die Ergebnisse dann in der Variablen $h:

PowerShell
Invoke-Command -Session $s {$h = Get-HotFix}

Die Variable $h wird in jeder der Sitzungen in $s erstellt, ist jedoch in der lokalen Sitzung nicht vorhanden. Jetzt können Sie die Daten in der Variablen $h mit anderen Befehlen in derselben Sitzung verwenden, und die Ergebnisse werden auf dem lokalen Computer angezeigt. Beispiel:

PowerShell
Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NTAUTHORITY\SYSTEM"}}

Nächste Lektion: Trennen von PSSessions mithilfe von Windows PowerShell

Vorherige Nächste