nowhereman
Goto Top

Powershell: Prüfen, ob eine VM vorhanden ist oder nicht

Hallo zusammen

Ich stehe momentan etwas auf dem Schlauch. Ich möchte gerne in einer Hyper-V Umgebung prüfen, ob eine VM vorhanden ist oder nicht. Wenn diese vorhanden ist, sollen mehrere Befehle ausgeführt werden. Wenn nicht, sollen andere Befehle abgearbeitet werden.

Wie realisiere ich dies möglichst einfach in Powershell?

Danke für eure Hilfe.

Gruss

Nowhereman

Content-Key: 220288

Url: https://administrator.de/contentid/220288

Printed on: April 16, 2024 at 06:04 o'clock

Mitglied: 106543
106543 Oct 24, 2013 at 06:22:30 (UTC)
Goto Top
Hi,

schon etwas her, dass ich mit Powershell gearbeitet habe, deswegen verzeihe mir bitte, dass ich nicht unbedingt die richtige Syntax liefere, aber ein bisschen googlen sollte das ganze dann ansehlich werden lassen.
Ich erinnere mich, dass es einen Befehl á la "testpath" gibt, mit dem man prüfen kann, ob ein bestimmter Pfad/Ordner vorhanden ist. Vielleicht solltest du überprüfen ob der Pfad der VM vorhanden ist. Wenn "JA" -> Befehle, wenn "NEIN" -> andere Befehle (kleine IF-Selektion).
Hoffe ich konnte helfen.

Grüße
Exze
Member: nowhereman
nowhereman Oct 24, 2013 at 07:12:04 (UTC)
Goto Top
Hi Exze

Das geht mit Testpath nicht, es kann ja gut sein, dass der Pfad zu der virtuellen Maschine nicht immer gleich ist. Der Namen der virtuellen Maschine ist immer derselbe. Dann auf das Verzeichnis zu prüfen, wäre nicht sinnvoll.

Gruss

Nowhereman
Member: DerWoWusste
DerWoWusste Oct 24, 2013 at 07:18:33 (UTC)
Goto Top
Moin.

Das Problem wird nicht deutlich. Natürlich kann Powershell abfragen, ob Maschine xy existiert und in welchem Zustand (suspended/running/...) diese ist. Fehlt Dir die Syntax?
Member: colinardo
colinardo Oct 24, 2013 updated at 07:35:52 (UTC)
Goto Top
Hallo Nowhereman,
$vm = get-VM -name "MyVirtualMachine" -computer HYPERVHOST -ErrorAction SilentlyContinue  
if ($vm){
    #VM existiert, nun tu was mit der Maschine...z.B, ob sie läuft
    echo "Status der Maschine: $($vm.State)"  
}
siehe auch: http://technet.microsoft.com/en-us/library/hh848479.aspx und http://technet.microsoft.com/en-us/library/hh848559.aspx

Grüße Uwe
Member: nowhereman
nowhereman Oct 24, 2013 at 07:50:15 (UTC)
Goto Top
Genau, der Syntax fehlt mir. Wie ich eine Maschine abfragen kann in welchem Zustand diese ist, habe ich hinbekommen, jedoch nicht, ob dieses tatsächlich existiert. Ich habe Probleme mit dem Errorhandling. Es funktioniert nicht alles, solange die VM existiert, existiert diese jedoch nicht, gibt Powershell eine Fehlermeldung aus und beendet das Script.

Schlussendlich sollte es so sein, dass wenn die VM existiert, diese gelöscht wird und eine neue erstellt wird und wenn diese nicht existiert, die VM zum ersten mal angelegt werden soll. Hintergrund ist, dass ich eine physikalische Festplatte als VHDX direkt in eine Hyper-V Maschine integrieren will und das immer wieder ein einem gewissen Intervall.
Member: nowhereman
nowhereman Oct 24, 2013 at 07:56:49 (UTC)
Goto Top
Zitat von @colinardo:
Hallo Nowhereman,
> $vm = get-VM -name "MyVirtualMachine" -computer HYPERVHOST -ErrorAction SilentlyContinue  
> if ($vm){
>     #VM existiert, nun tu was mit der Maschine...z.B, ob sie läuft
>     echo "Status der Maschine: $($vm.State)"  
> }
> 
siehe auch: http://technet.microsoft.com/en-us/library/hh848479.aspx und http://technet.microsoft.com/en-us/library/hh848559.aspx

Grüße Uwe

Hallo Uwe

Ich werde mir das mal anschauen, danke. So etwas hatte ich auch schon getestet, vielleicht habe ich einfach einen Überlegungsfehler gemacht.

Gruss

Nowhereman
Member: nowhereman
nowhereman Oct 25, 2013 at 09:13:00 (UTC)
Goto Top
Zitat von @colinardo:
Hallo Nowhereman,
> $vm = get-VM -name "MyVirtualMachine" -computer HYPERVHOST -ErrorAction SilentlyContinue  
> if ($vm){
>     #VM existiert, nun tu was mit der Maschine...z.B, ob sie läuft
>     echo "Status der Maschine: $($vm.State)"  
> }
> 
siehe auch: http://technet.microsoft.com/en-us/library/hh848479.aspx und http://technet.microsoft.com/en-us/library/hh848559.aspx

Grüße Uwe

Hallo Uwe

Nur als Rückmeldung: Es hat funktioniert. Danke für deine Hilfe.

Gruss

Nowhereman