Tags: Hyper-V, PowerShell, Container
PowerShell Direct ist ein neues Feature von Windows 10 und Server 2016. Es kann eine Verbindung direkt mit einer virtuellen Maschine herstellen, ohne dass man das Gastbetriebssystem oder das Netzwerk dafür konfigurieren muss.
Grundsätzlich macht es PowerShell dem Benutzer relativ einfach, Kommandos auf einem Remote-PC abzusetzen oder dort eine interaktive Sitzung zu öffnen (siehe: Enter-PSSession, Invoke-Command: PowerShell remote ausführen).
Kommunikation über den VMBus
Die unkomplizierte Remote-Administration verlangt allerdings, dass entsprechende Voraussetzungen dafür gegeben sind. Dazu zählt die Konfiguration von WinRM inklusive der Firewall-Regeln, die sich bei Mitgliedern einer Domäne einfach bewerkstelligen lässt, sonst aber mühevoll sein kann. Eine weitere Bedingung besteht natürlich darin, dass man den Remote-Computer über das Netzwerk erreicht.
PowerShell Direct hingegen ist darauf nicht angewiesen. Wie VMConnect, das eine RDP-Verbindung mit einer VM herstellt, kommuniziert PowerShell Direct über den VMBus von Hyper-V mit einer VM. Aufgrund dieser Architektur klappt die Kommunikation sogar dann, wenn das Netzwerk der VM als private oder gar fehlerhaft konfiguriert wurde.
Daher eignet sich PowerShell Direct nicht nur für das Troubleshooting von VMs, sondern etwa auch, um einen Nano Server einer AD-Domäne anzuschließen, wenn dieser in einer virtuellen Maschine läuft. Ein weiterer interessanter Anwendungsfall wäre, dass man kurzfristig Dateien in eine VM kopieren muss, indem man dafür Copy-Item mit dem neuen Parameter ToSession nutzt.
Beschränkungen von PowerShell Direct
Gleichzeitig gelten aber für PowerShell Direct einige Einschränkungen:
- Die Verbindung lässt sich nur vom Host aus aufbauen. Selbst in einem Cluster muss man PowerShell auf dem Knoten ausführen, auf dem die VM läuft.
- Verbindungen von VM zu VM oder von VM zu Host sind nicht vorgesehen.
- Auf dem Host und in der VM werden nur Windows 10 und Server 2016 unterstützt.
- PowerShell muss mit administrativen Rechten aufgerufen werden
Enter-PSSession und Invoke-Command verwenden
Sind diese Voraussetzungen gegeben, dann funktioniert die eigentliche Nutzung von PowerShell Direct ganz ähnlich wie bei einer herkömmlichen Remote-Session. Enter-PSSession dient wie gehabt dazu, um eine interaktive Sitzung zu öffnen, während man mit Invoke-Command einzelne Kommandos oder Scripts auf dem entfernten Rechner ausführt.
Der wesentliche Unterschied besteht darin, dass man nicht den Parameter ComputerName verwendet, um das Betriebssystem auf einem physikalischen Rechner oder in einer VM anzusprechen. Vielmehr adressiert man die virtuelle Maschine direkt, entweder über ihren Namen (Parameter VMName) oder ihre GUID (Parameter VMid).
Beide Informationen kann man recht einfach über das Cmdlet Get-VM erhalten:
Get-VM | select Name, ID, State
Die zusätzliche Abfrage des Status stellt sicher, dass man sich nur mit VMs verbindet, die tatsächlich eingeschaltet sind. Wenn der Name der virtuellen Maschine beispielsweise auf WS2018-VM1 lautet, dann würde man eine interaktive Session folgendermaßen starten:
Enter-PSSession -VMName "WS2018-VM1"
Nach dem Aufbau der Verbindung verlangt PowerShell die Eingabe der Anmeldeinformationen für das Gastbetriebssystem, bevor man wie gewohnt auf der Kommandozeile des Remote-Rechners landet.
Schließlich sei noch darauf hingewiesen, dass sich PowerShell Direct nicht auf das Management von VMs beschränkt, sondern auch Container
unterstützt. In diesem Fall übergibt man Enter-PSSession bzw. Invoke-Command die Parameter ContainerName oder ContainerID (siehe dazu: Windows Server 2016 Container erstellen).
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- Virtuelle Maschine vollständig mit PowerShell erstellen (am Beispiel von Azure Stack HCI)
- Windows Admin Center v2009: Erweitertes Management von Hyper-V und File-Services, Docker-Installation
- PowerShell-Remoting, Hyper-V Manager: Fehler wegen Netzwerkverbindungstyp "Öffentlich"
- Hyper-V-Host mit PowerShell (remote) konfigurieren, vSwitch hinzufügen
- Windows Server 1803: Neue Container-Features, Abwertung für Semi-annual Channel
Weitere Links