• Blog
  • Webinare
  • Partner
  • Support
  • Kontakt
  • DE
    • EN
ScriptRunner
  • Über uns
    • Team
    • Jobs
    • Presse
  • Warum
  • Praxisbeispiele
  • Software
    • ScriptRunner Server
    • ScriptRunner Web Apps
    • ScriptRunner Connectoren
    • ScriptRunner ActionPacks
  • Jetzt testen
  • Suche
  • Menü Menü
Du bist hier: Startseite1 / ScriptRunner Blog2 / News3 / Erste Schritte mit PowerShell-Remoting

Erste Schritte mit PowerShell-Remoting

Author: Adam Bertram|Lesezeit: 6 Minuten | Category: News, Scripting

PowerShell-Remoting existiert bereits seit den frühen Tagen der PowerShell-Scriptsprache. Es ermöglicht die Ausführung von Befehlen und den Empfang von Ausgaben zwischen entfernten Systemen. Traditionell baute PowerShell-Remoting auf WinRM auf, aber mit neueren PowerShell-Versionen steht nun das SSH-Protokoll zur Verfügung, um auch das Remoting zwischen Linux-Systemen zu erleichtern. In diesem Artikel erfahren Sie, wie Sie Ihre ersten Schritte mit PowerShell-Remoting gehen können, wobei der Schwerpunkt auf PowerShell-Versionen 5.1 und höher liegt.

Table of content

  • Anforderungen und Einrichtung
  • Beispielbefehle für PowerShell-Remoting
  • Fazit
  • Weiterführende Links
Artikel: Erste Schritte mit PowerShell-Remoting

Anforderungen und Einrichtung

Es gibt drei moderne PowerShell-Varianten, die immer noch weit verbreitet sind. Es wird dringend empfohlen, auf PowerShell 7 umzusteigen, da dies eine Langzeitversion (LTS) und die aktuellste ist. Abgesehen davon gibt es natürlich Situationen, in denen dies noch nicht praktikabel ist.

PowerShell 5.1

Dies ist die letzte Version von Windows PowerShell, die mit dem Windows-Betriebssystem gebündelt wurde. Sie wird immer noch von zahlreichen Unternehmen verwendet, und es gibt einige einfache Anforderungen, damit Remoting funktioniert.

  • Das Microsoft .NET Framework 4.5.2 oder höher
    • .NET 4.6.2 ist auf Windows Server 2016 vorinstalliert
  • Windows Remote Management 5.1
    • Wird zusammen mit Windows 2016 und höher ausgeliefert

In diesem Artikel konzentrieren wir uns auf Windows Server 2016, da frühere Versionen von Microsoft als End-of-Life eingestuft wurden.

Beachten Sie, dass Windows PowerShell standardmäßig einen microsoft.powershell Session Endpunkt erstellt. Enter-PSSession und New-PSSession verwenden diesen Endpunkt, wenn kein anderer Session Endpunkt angegeben ist. Da neuere Versionen von PowerShell diesen Endpunkt nicht erstellen oder überschreiben, muss der Endpunkt Name angegeben werden, um eine Verbindung mit der richtigen Remoteinstanz herzustellen, wenn keine Verbindung mit Windows PowerShell hergestellt wird.

Ein Beispiel für die Windows PowerShell-Standardkonfiguration finden Sie unten (Abbildung 1).

Screenshot der Windows PowerShell-Standardkonfiguration

Abb. 1: Die Windows PowerShell-Standardkonfiguration

PowerShell Core (6.x)

PowerShell Core wird standardmäßig mit den erforderlichen .NET Core-Dateien ausgeliefert. Es sind einige Schritte erforderlich, damit WinRM PowerShell-Remoting funktioniert. Frühere Versionen von PowerShell Core hatten keine ordnungsgemäße Enable-PSRemoting-Unterstützung und erforderten daher ein Installationsscript zum Verschieben der Datei „pwrshplugin.dll“ nach System32 und zum Registrieren von Endpunkten. In den neuesten Versionen von PowerShell Core funktioniert Enable-PSRemoting korrekt, um die DLL und versionsspezifische Endpunkte zu registrieren (wie in Abbildung 2 dargestellt).

Nach der Ausführung von Enable-PSRemoting werden die korrekten versionsspezifischen Endpunkte registriert, in diesem Fall 6.2.5 (Abbildung 3).

Screenshot: WinRM PowerShell-Remoting in PowerShell Core

Abbildung 2: Aktivieren von WinRM PowerShell-Remoting in PowerShell-Core


Screenshot: Versionsspezifische Endpoints für PowerShell Core

Abbildung 3: Versionsspezifische Endpunkte für PowerShell-Core

Der Grund dafür, dass der Parameter -SkipNetworkProfileCheck angegeben wird, ist, dass ein beliebiges Public Netzwerk den Befehl Enable-PSRemoting vorzeitig beendet. Solange Sie sich der Auswirkungen und der ordnungsgemäßen Kontrolle dessen bewusst sind, ist es sicher, diesen Befehl auszuführen.

PowerShell 7

In der neuesten Version von PowerShell ist das Skript Install-PowerShellRemoting.ps1 ebenfalls nicht mehr erforderlich, da Enable-PSRemoting alles, was benötigt wird, durch Ausführen von Enable-PSRemoting registriert, wie unten in Abbildung 4 zu sehen ist.

Screenshot: Ausgabe des Enable-PSRemoting Cmdlet in PowerShell 7

Abb. 4: Ausgabe des Cmdlet „Enable-PSRemoting“ in PowerShell 7

Die Endpunkt-Namen, die dann registriert werden, um Remoting zu ermöglichen, sind spezifisch für die neueste PowerShell-Version, in diesem Fall 7.0.1 (siehe Abbildung 5).

Screenshot: Liste der Endpoint Namen die für PowerShell-Remoting in PowerShell 7 registriert sind

Abb. 5: Liste der für Remoting mit PowerShell 7 registrierten Endpunkt-Namen

SSH-Remoting Voraussetzungen

In PowerShell Core und PowerShell 7 ist nun die Option zur Verwendung von SSH als Endpunkt verfügbar. Es gibt einige Anforderungen und Schritte, die erforderlich sind, damit SSH-Remoting funktioniert.

  • PowerShell Core 6.x oder PowerShell 7.x
  • ssh.exe (Client) und sshd.exe (Server)
  • Windows 10 Build 1809 und Windows Server 2019 für integriertes SSH (Client)

Setup der SSH-Endpunkte

Die Einrichtung von PowerShell zur Verwendung von SSH erfordert die folgenden Schritte und Konfigurationen.

  • Installieren von OpenSSH Server und Client
    • OpenSSH ist für Windows direkt in Windows 10 (1809 oder höher) und Windows Server 2019 als optionales Feature verfügbar (Anweisungen zur Installation unter Windows 10 und auf Windows Server finden Sie im Blog von Thomas Maurer)
    • Unter Linux können Sie OpenSSH je nach Plattform installieren
  • Konfigurieren Sie das SSH-Subsystem so, dass es einen PowerShell-Prozess auf dem entfernten Rechner hostet

Führen Sie die folgenden Befehle aus, um die erforderlichen Fähigkeiten (OpenSSH Client ist möglicherweise bereits installiert), Dienstkonfigurationen und Firewall-Regeln zu installieren..

# Installieren Sie den OpenSSH Client und Server 
Add-WindowsCapability -Online -Name 'OpenSSH.Client~~~~0.0.1.0' 
Add-WindowsCapability -Online -Name 'OpenSSH.Server~~~~0.0.1.0' 

# Führen Sie die initiale Konfiguration des SSH Server durch
Start-Service -Name 'sshd' 
Set-Service -Name 'sshd' -StartupType 'Automatic' 

# Bestätigen Sie, dass die Firewall-Regel konfiguriert ist. Sie sollte vom Setup automatisch erstellt werden. 
Get-NetFirewallRule -Name '*ssh*' | Format-Table -AutoSize 

# Es sollte eine Firewall-Regel namens "OpenSSH-Server-In-TCP" geben, die aktiviert werden sollte 
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

Damit der SSH-Server schließlich mit PowerShell-Remoting arbeiten kann, muss das Subsystem korrekt eingestellt sein.

notepad $Env:ProgramDatasshsshd_config

Fügen Sie in der Datei sshd_config die folgenden Konfigurationen hinzu, die speziell für PowerShell 7 gelten.

Stellen Sie nach dem Speichern und Konfigurieren sicher, dass Sie den Befehl Restart-Service -Name ’sshd‘ ausführen, um den SSH-Server neu zu starten.

# Stellen Sie sicher, dass die Subsystemleitung nach der bestehenden SFTP-Subsystemleitung verläuft 
Subsystem powershell c:/progra~1/powershell/7/pwsh.exe -sshs -NoLogo -NoProfile 

# Ändern Sie c:/progra~1/powershell/7/pwsh.exe zu c:/progra~1/powershell/6/pwsh.exe für PowerShell Core 
PasswordAuthentication yes 

# Untenstehende Änderung ist optional, jedoch empfohlen, um den Einsatz von public/private Schlüsseln zu ermöglichen
PubkeyAuthentication yes

Starten Sie schließlich den SSH-Server neu:

Restart-Service -Name 'sshd'

Es gibt einen Fehler in der OpenSSH-Serverversion, die in Windows enthalten ist. Er erfordert, dass 8.3-Abkürzungen für beliebige Dateipfade verwendet werden, daher c:/progra~1. Um zu überprüfen, ob Sie den korrekten 8.3-Abkürzungen verwenden, können Sie den folgenden Befehl verwenden, um diesen für Programmdateien (wo PowerShell 6 oder 7 installiert ist) abzurufen:

Get-CimInstance Win32_Directory -Filter 'Name="C:Program Files"' | Select-Object EightDotThreeFileName

Beispielbefehle für PowerShell-Remoting

Was können Sie also mit PowerShell Remoting machen und wie wird es nützlich? Oftmals müssen Systemadministratoren Informationen von einer Vielzahl von Systemen sammeln oder einen Befehl auf vielen Systemen gleichzeitig ausführen, um ein Problem zu beheben oder ein neues Paket bereitzustellen. Mit PowerShell-Remoting lässt sich das einfach bewerkstelligen.

Informationen sammeln

Im folgenden Szenario stellen wir eine Remote-Verbindung zu einem PowerShell 7-Remotendpunkt her und erhalten die laufenden Dienste.

$Params = @{ 
		"ComputerName" = 'Host1' 
		"ConfigurationName" = 'PowerShell.7' 
		"ScriptBlock" = { 
				Get-Service | Where-Object Status -EQ 'Running' | Format-Table -AutoSize 
				} 
		} 
Invoke-Command @Params

Einen PowerShell-Befehl ausführen

Vielleicht müssen wir einen Dienst neu starten, in diesem Fall den Druckspooler.

$Params = @{ 
		"ComputerName" = 'Host1' 
		"ConfigurationName" = 'PowerShell.7' 
		"ScriptBlock" = { 
				Get-Service -Name 'Spooler' | Restart-Service 
				} 
		} 
Invoke-Command @Params

Fazit

PowerShell-Remoting ist ein leistungsstarkes Tool und wird durch die zusätzlichen plattformübergreifenden Fähigkeiten und die Verwendung optionaler SSH-Verbindungen zu einem noch flexibleren und wichtigeren Werkzeug für Systemadministratoren.

Weiterführende Links

  • SSH unter Windows 10 als optionales Feature installieren – Thomas Maurer
  • OpenSSH-Server auf Windows-Server installieren – Thomas Maurer
  • PowerShell-Remoting über SSH – PowerShell | Microsoft Docs
Share this article
  • Teilen auf Facebook
  • Teilen auf Twitter
  • Teilen auf WhatsApp
  • Teilen auf LinkedIn
  • Teilen auf Reddit
  • Per E-Mail teilen

Diese Beiträge könnten Sie auch interessieren:

Article: Using PowerShell to Create New Citrix MCS MachinesScriptRunner Software GmbH

Erstellen neuer Citrix MCS-Maschinen mit PowerShell

15. Dezember 2020
Weiterlesen
https://www.scriptrunner.com/wp-content/uploads/2020/12/citrix-mcs-machines.png 1000 1000 Guy Leech https://www.scriptrunner.com/wp-content/uploads/2018/05/ScriptRunner_Logo_RGB-300x45.png Guy Leech2020-12-15 16:24:422021-01-07 16:31:57Erstellen neuer Citrix MCS-Maschinen mit PowerShell
Artikel: Einführung in PowerShell in Citrix Virtual Apps and DesktopsScriptRunner Software GmbH

Eine Einführung in PowerShell in Citrix Virtual Apps and Desktops

10. Dezember 2020
Weiterlesen
https://www.scriptrunner.com/wp-content/uploads/2020/12/citrix-virtual-desktops_Zeichenfläche-1.png 1000 1000 Guy Leech https://www.scriptrunner.com/wp-content/uploads/2018/05/ScriptRunner_Logo_RGB-300x45.png Guy Leech2020-12-10 12:05:542021-01-07 16:33:12Eine Einführung in PowerShell in Citrix Virtual Apps and Desktops
Article: Windows-Prozesse mit PowerShell anzeigen, auslesen und beendenScriptRunner Software GmbH

Windows-Prozesse mit PowerShell anzeigen, auslesen und beenden

11. November 2020
Weiterlesen
https://www.scriptrunner.com/wp-content/uploads/2020/11/windows-prozesse-powershell.png 1000 1000 Thomas Joos https://www.scriptrunner.com/wp-content/uploads/2018/05/ScriptRunner_Logo_RGB-300x45.png Thomas Joos2020-11-11 10:00:552021-01-07 16:49:31Windows-Prozesse mit PowerShell anzeigen, auslesen und beenden

Über den Autor:

Adam Bertram
Adam Bertram

Adam ist seit über 20 Jahren im IT-Bereich tätig und ein erfahrener Online-Business-Profi. Er ist Unternehmer, IT-Influencer, Microsoft MVP, Blogger, Trainer, Autor und Content-Marketing-Autor für mehrere Technologieunternehmen.

Neuste Beiträge

  • Article: How to Establish Simple Server Monitoring via PowerShell, by Adam BertramScriptRunner Software GmbHRichten Sie ein einfaches Server-Monitoring mit PowerShell ein20. Januar 2021 - 9:32
  • Artikel: Weihnachts-Spaß mit PowerShell und ScriptRunnerScriptRunner Software GmbHWeihnachts-Spaß mit PowerShell und ScriptRunner23. Dezember 2020 - 10:00
  • Article: Using PowerShell to Create New Citrix MCS MachinesScriptRunner Software GmbHErstellen neuer Citrix MCS-Maschinen mit PowerShell15. Dezember 2020 - 16:24
  • Artikel: Einführung in PowerShell in Citrix Virtual Apps and DesktopsScriptRunner Software GmbHEine Einführung in PowerShell in Citrix Virtual Apps and Desktops10. Dezember 2020 - 12:05
  • Artikelbild: PowerShell AliasingScriptRunner Software GmbHPowerShell-Aliasing2. Dezember 2020 - 10:00

Produkt

  • ScriptRunner Plattform
  • ScriptRunner ActionPacks
  • ScriptRunner Server
  • ScriptRunner Apps
  • ScriptRunner Connectoren
  • Lizenzierung
Jetzt kostenfrei testen

Lösungen

  • IT-Administratoren
  • IT-Teamleiter
  • Use Cases

Ressourcen

  • Blog
  • Dokumentation
  • Knowledge Base
  • Webinare
  • PowerShell-Lexicon
  • PowerShell-Poster
  • PowerShell Security Ebook

Unternehmen

  • Über uns
  • Team
  • Jobs
  • Presse
  • Referenzen
  • Partner

Kontakt

ScriptRunner Software GmbH
Ludwig-Erhard-Straße 2
76275 Ettlingen
Deutschland

T: +49 7243 20715-0
M: info(at)scriptrunner.com

Demo vereinbaren
© ScriptRunner Software GmbH is a subsidiary of AppSphere AG
  • LinkedIn
  • Xing
  • Twitter
  • Facebook
  • Youtube
  • Impressum
  • Datenschutz
  • Newsletter
Nach oben scrollen