9. Oktober 2019 Aleksej Kusnir

PowerShell Direct Tutorial: VM Automation

Sie möchten wissen was PowerShell Direct ist und wie es effektiv für sich nutzen können?

Gemeinsam schauen wir uns an, wie Sie mithilfe von PowerShell Direct Ihre virtuellen Windows Maschinen auch ohne eine IP-Adressen unter Hyper-V bereitstellen und konfigurieren können.

Sie erfahren, wie Sie eine automatische Bereitstellung Ihrer VMs über PowerShell Direct durchführen.

More...

Des Weiteren möchte ich Ihnen zeigen, wie ich dieses Feature in der Praxis verwenden und wie die Technologie hinter PowerShell Direct funktioniert.

Vorab noch ein paar wichtige Grundlagen zu PowerShell Direct.

Was ist PowerShell Direct?​

PowerShell Direct ist eine Technologie, die es ermöglicht, dass Sie virtuelle Windows Maschinen unter Hyper-V mit PowerShell konfigurieren können ohne, dass die VM eine Netzwerkverbindung hat.

PowerShell Direct nutzt die "VMBUS" Technologie unter Hyper-V um auf die VM zuzugreifen um dort z.B. eine Netzwerkverbindung zu konfigurieren. 

Lassen Sie uns nun gemeinsam anschauen wie konkret PowerShell Direct in der Praxis verwendet wird.

Ich möchte Ihnen zuerst die wichtigsten Grundlagen darstellen und dann schauen wir uns gemeinsam in einer Demo an, wie Sie mit PowerShell Direct Ihre VMs verwalten können.

Lassen Sie uns loslegen.

Wie PowerShell Direct in der Praxis verwendet wird?​

In der Praxis wird PowerShell Direct verwendet um remote vom Hyper-V Host aus eine VM anzupassen.

Ich möchte Ihnen nun ein Beispiel aus der Praxis vorstellen, wo z.B.: PowerShell Direct verwendet wird.

Information: Ich persönlich nutze dieses Feature um z.B. unsere Demoumgebungen für unsere Schulungsteilnehmer zu bauen.

Nehmen wir mal an, Sie möchten ein Prozess im Unternehmen definieren, der es ermöglicht, dass eine neue VM automatisch in Hyper-V erstellt wird. 

So oder so ähnlich könnte ein Prozess aussehen für die automatische Erstellung einer VM unter Hyper-V mithilfe von PowerShell.

Automation: VM Bereitstellung unter Hyper-V mit PowerShell Direct​

Schritte 1 - 7

1

VM mit PowerShell unter Hyper-V erstellen

Als erstes erstellen Sie die VM mit PowerShell. Dazu nutzen Sie ein Template in dem z.B. Windows Server 2019 installiert und ein sysprep durchgeführt wurde. 

2

VM Netzwerkeinstellungen mit PowerShell Direct anpassen

Nachdem die VM gestartet und bereit ist, werden die Netzwerkkarten Einstellungen geändert. Es wird eine statische IP-Adresse, Gateway, Subnetmaske und ein DNS Server eingestellt. Danach wird die Netzwerkkommunikation getestet.

3

VM Einstellungen ändern

In diesem Abschnitt ändern wir z.B. den Hostnamen des Servers und lassen diesen neustarteten.

4

VM in die Domäne aufnehmen 

Nachdem die Netzwerkeinstellungen gemacht wurden. Können wir die VM in die Domäne aufnehmen.

5

VM Software installieren

Jetzt wird noch die Software installiert bzw. die Einstellungen für Backup etc. angepasst.

6

Weitere Einstellungen über PowerShell

Sobald die VM in der Domäne ist, passen wir in diesem Abschnitt noch die Firewall, Proxy und RDP Einstellungen an.

7

VM Infos per E-Mail versenden

Wenn Sie VM Konfiguration abgeschlossen ist, wird z.B.: eine E-Mail an das IT-Team oder die Fachabteilung weitergeleitet mit den Einstellungen der VM und den Anmeldedaten.

PowerShell Direct Befehle​

PowerShell Direct verwenden Sie für die Remotekonfiguration einer VM.

Anstatt hier für den Parameter -Computername den DNS Namen des Windows Server oder die IP-Adresse zu verwenden, nehmen Sie stattdessen den Parameter -VMName und geben dort den Namen der VM ein.

Dazu müssen Sie auf dem Hyper-V Host angemeldet sein, auf dem die VM auch gerade läuft.

Dazu haben Sie unter Hyper-V zwei Befehle, die Sie verwenden können.

Invoke-Command -VMName 

Mit dem Befehl Invoke-Command können Sie PowerShell Befehle auf einem System Remote ausführen.


Dem Invoke-Command können auch Parameter und Einstellungen mitgegeben werden. 


Mit PowerShell Direct können Sie eine VM auch ohne eine Netzwerkverbindung ansprechen. 

Enter-PSSession -VMName

Der Befehl Enter-PSSession ermöglicht das Sie eine PowerShell Session zu einem Remote System herstellen. Dies ist vergleichbar mit einer SSH Session aus der Linux Welt. So können Sie mit der PowerShell Konsole arbeiten, als ob Sie auf dem Remote System angemeldet wären.


Mit PowerShell Direct können Sie auch eine PowerShell Session einer VM herstellen die noch keine Netzwerkverbindung hat.

Anbei die Dokumentation von Microsoft mit ein paar Beispielen. 

https://docs.microsoft.com/de-de/virtualization/hyper-v-on-windows/user-guide/powershell-direct 

Ok, lassen Sie uns nun gemeinsam ein paar Beispiele durchgehen.

Mit PowerShell Direct können Sie nicht nur eine VM konfigurieren, sondern auch Daten austauschen.

Schauen wir uns zwei Beispiele an.

Beispiel 1: Dateien kopieren mit PowerShell Direct​

Mit PowerShell Direct können Sie Dateien von Ihren Hyper-V host in die VM und auch aus der VM kopieren.

Dazu nutzen den Copy-Item Befehle und den Parameter -ToSession.

 Datei in die VM kopieren

$session= New-PSSession -VMName"VMName" 

Copy-Item -ToSession $session -Path C:\hostpfad\daten.txt -Destination C:\vmpfad\ 

Datei aus der VM kopieren​

Copy-Item -FromSession $session -Path C:\vmpfad\data.txt -Destination C:\hostpfad\

PSSession entfernen

Remove-PSSession $session

Schauen wir uns nun an, wie die ein Befehle in der VM ausführen.

Beispiel 2: PowerShell Code ausführen mit PowerShell Direct​

Nehmen wir mal an, Sie möchten sich die Netzwerkkonfiguration mit PowerShell Direct auf der VM anschauen.

Dann würden Sie den Befehl Invoke-Command verwenden.

Invoke-Command -VMName "VMName" -ScriptBlock {Get-NetIPAddress}

Video: PowerShell Direct DEMO​

In diesem Screencast zeige ich Ihnen wie PowerShell Direct in einem Script funktioniert.

Fazit​

Sie haben nun gesehen was PowerShell Direct ist und wie Sie es in der Praxis verwenden können. Sie kennen nun die PowerShell Befehle, die Sie benötigen um PowerShell Direct nutzen zu können.

Ich wünsche Ihnen viel Erfolg und viel Spaß beim Testen.

Aleksej Kusnir

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.