Seite 1 von 1
Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 25.10.2017, 08:07
von jgreil
Guten Morgen,
ich verwende VMware Workstation 14 um mich per "Connect to Server" auf die VMs auf meinem ESXi zu verbinden. Das klappt sehr gut und ist dank der optionalen "Thumbnail Bar" am unteren Bildschirmrand auch halbwegs übersichtlich, wenn man immer mehrere VMs offen hat.
Aktuell ist es halt nur etwas umständlich, da ich mich nach jedem Start der VMware Workstation zum Server verbinden muss und dann ca. 10 VMs einzeln anklicken muss um eine Verbindung zu bekommen.
Gibt es hier eine komfortable Möglichkeit, wie ich bei jedem Start des Programms VMware Workstation automatisch eine Verbindung zu meinem ESXi herstellen lassen kann und auch automatisch VM1 - VM10 öffne? Laufen tun die VMs am Server sowieso rund um die Uhr. Ich möchte halt nicht jedes mal alle einzeln anklicken müssen. Geht das irgendwie automatisch? Vielleicht über Kommandozeile?
Lokal läuft gar keine VM bei mir.
Danke für eure Hilfe!
EDIT:
Ich habe jetzt folgende Parameter für vmware.exe gefunden, leider bringt mir das aber nichts wie es aussieht, oder?

Wenn ich z.B. folgenden Befehl starte:
Dann öffnet sich leider nur VMware Workstation ganz normal ohne irgendwas zusätzlich. Aslo einfach so, wie wenn iches über die Verknöpfung per Doppelklick gestartet hätte.
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 25.10.2017, 08:48
von ~thc
Es ist ja nicht das erste Mal, dass du etwas
in dieser Richtung erfragst. Daher mal eine Gegenfrage, weil es mich interessiert: Welche Art von VMs brauchen bei dir eine Live-Überwachung in dieser Form? Läuft da etwas drauf, dass man dann im kleinen Live-Bild erkennen kann? Oder ist das einfach Arbeitsplatz-Ästhetik?
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 25.10.2017, 08:52
von jgreil
Ist eigentlich beides.
Also es sind Programme die Daten aus dem Web sammeln / auswerten und da kommt es manchmal zu Fehlern, wo dann ein Pop-Up aufgeht oder das Programm komplettgeschlossen ist.
In der Thumbnail vorschau würde ich schnell erkennen, wenn so etwas geschehen ist und außerdem muss ich sehr oft auf den VMs etwas manuell machen, deshalb ist es auch sehr hilfreich, wenn diese immer sofort mit einem Klick geöffnet werden können.
Das funktioniert ja auchschon prima mit VMware Workstation, aber nur ist es halt mühselig, nach jedem Neustart erst mal alle 10 oder mehr VMs anzuklicken, das hätte ich einfach gerne autoatisiert so geöffnet.
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 25.10.2017, 09:03
von jgreil
Dieser Befehl scheint dem Ziel schon näher zu kommen:
Also das Programm VMware Workstation wird geöffnet und auch erfolgreich eine Verbindung zum ESXi geöffnet, dann kommt jedoch diese Fehlermeldung:

Wenn ich es statt dem Namen mit dem Datastore Path versuche, funktioniert es leider auch nicht, gleicher Fehler:
Code: Alles auswählen
vmware -H 192.168.1.10 -U root -P test123 -X -M "[SSD1] B1/B1.vmx"Die VM am Server heißt "B1". Muss man hier in der Kommandozeile de Namen evtl. anders schreiben?
Mich wundert es sowieso, dass die Option "-M" funktioniert, obwohl siegar nicht in der Liste der möglichen Parameter angeführt wird (siehe Screenshot im ersten Post).
Kennt sich jemand damit aus und kann mir bitte weiterhelfen?
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 25.10.2017, 09:29
von ~thc
Ich kann dir nur empfehlen, statt einer Workstation-Behelfslösung mal ein offizielles Tool auszuprobieren.
Aktiviere in allen VMs den Remote Desktop und verwalte alle VMs gleichzeitig mit dem Remote Desktop Connection Manager von Microsoft:
https://www.microsoft.com/en-us/download/details.aspx?id=44989Beispiel:
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 25.10.2017, 09:31
von rprengel
jgreil hat geschrieben:Ist eigentlich beides.
Also es sind Programme die Daten aus dem Web sammeln / auswerten und da kommt es manchmal zu Fehlern, wo dann ein Pop-Up aufgeht oder das Programm komplettgeschlossen ist.
In der Thumbnail vorschau würde ich schnell erkennen, wenn so etwas geschehen ist und außerdem muss ich sehr oft auf den VMs etwas manuell machen, deshalb ist es auch sehr hilfreich, wenn diese immer sofort mit einem Klick geöffnet werden können.
Das funktioniert ja auchschon prima mit VMware Workstation, aber nur ist es halt mühselig, nach jedem Neustart erst mal alle 10 oder mehr VMs anzuklicken, das hätte ich einfach gerne autoatisiert so geöffnet.
Die Überwachung kannst du mit einem zentrale Monitoring erledigen.
Wenn das produktive Systeme sind gehören die auf einen seperaten ESX Host.
Kleine Microserver für schlanke Systeme bekommst du mit etwas mehr Ram ab grob 300 Euro.
Gruss
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 25.10.2017, 11:53
von jgreil
~thc hat geschrieben:Ich kann dir nur empfehlen, statt einer Workstation-Behelfslösung mal ein offizielles Tool auszuprobieren.
Danke für den Tipp mit dem Remote Desktop Connection Manager. Das sieht auch ganz gut aus, Nachteil ist halt, dass eine durchgehend geöffnete RDP Verbindung durchaus Last verursacht und vor allem ein anderes "Verhalten" bewirkt, als wenn per VMware Remote Console direkt draufgeschaut wird.
Als Behelfs-Lösung bzw. inoffizielles Tool würde ich VMware Workstation jetzt nicht bezeichnen. Es ist von VMware und bietet offiziell die Verbindung auf einen Remote Server an. Es funktioniert ja auch wirklich perfekt, nur ist es halt leider sehr mühsam, jedes mal alle VMs anzuklicken.
Ein zusätzlicher Nachteil von RDP ist auch, dass man die VM erst ab Windows steuern kann.
Vielleicht sind meine Anforderungen nicht 0815, aber genau deshalb versuche ich ja hier eine Lösung mit ein paar Ideen von euch zu finden.
rprengel hat geschrieben:jgreil hat geschrieben:Die Überwachung kannst du mit einem zentrale Monitoring erledigen.
Was wäre das zum Beispiel?
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 25.10.2017, 12:08
von rprengel
jgreil hat geschrieben:~thc hat geschrieben:Ich kann dir nur empfehlen, statt einer Workstation-Behelfslösung mal ein offizielles Tool auszuprobieren.
Danke für den Tipp mit dem Remote Desktop Connection Manager. Das sieht auch ganz gut aus, Nachteil ist halt, dass eine durchgehend geöffnete RDP Verbindung durchaus Last verursacht und vor allem ein anderes "Verhalten" bewirkt, als wenn per VMware Remote Console direkt draufgeschaut wird.
Als Behelfs-Lösung bzw. inoffizielles Tool würde ich VMware Workstation jetzt nicht bezeichnen. Es ist von VMware und bietet offiziell die Verbindung auf einen Remote Server an. Es funktioniert ja auch wirklich perfekt, nur ist es halt leider sehr mühsam, jedes mal alle VMs anzuklicken.
Ein zusätzlicher Nachteil von RDP ist auch, dass man die VM erst ab Windows steuern kann.
Vielleicht sind meine Anforderungen nicht 0815, aber genau deshalb versuche ich ja hier eine Lösung mit ein paar Ideen von euch zu finden.
rprengel hat geschrieben:jgreil hat geschrieben:Die Überwachung kannst du mit einem zentrale Monitoring erledigen.
Was wäre das zum Beispiel?
check_mk z.B. wird unter Linux installiert
das was du da mit der Workstation machst ist nichtd er richtige Weg.
Zersägst du dir den Arbeistplatz ist bestenfals nur alles Weg und muss aus der Sicherung hergestellt werden die daber nur sauber schreiben kannst wenn die Vms aus sind.
Im weniger gute Fall stehst du übel im Regen.
Gruss
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 25.10.2017, 12:23
von jgreil
rprengel hat geschrieben:check_mk z.B. wird unter Linux installiert
das was du da mit der Workstation machst ist nichtd er richtige Weg.
Zersägst du dir den Arbeistplatz ist bestenfals nur alles Weg und muss aus der Sicherung hergestellt werden die daber nur sauber schreiben kannst wenn die Vms aus sind.
Im weniger gute Fall stehst du übel im Regen.
Sorry, dass ich das sage, aber Rechtschreibung und Satzzeichen würden der Lesbarkeit echt gut tun.
Zum Thema: Also entweder stehe ich komplett auf der Leitung, oder du hast meine Frage falsch verstanden?
Warum bitte sollen meine VMs ein Problem bekommen, welche ja am ESXi laufen, wenn ich mir den Arbeitsplatz zersäge?

Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 25.10.2017, 12:54
von rprengel
jgreil hat geschrieben:rprengel hat geschrieben:check_mk z.B. wird unter Linux installiert
das was du da mit der Workstation machst ist nichtd er richtige Weg.
Zersägst du dir den Arbeistplatz ist bestenfals nur alles Weg und muss aus der Sicherung hergestellt werden die daber nur sauber schreiben kannst wenn die Vms aus sind.
Im weniger gute Fall stehst du übel im Regen.
Sorry, dass ich das sage, aber Rechtschreibung und Satzzeichen würden der Lesbarkeit echt gut tun.
Zum Thema: Also entweder stehe ich komplett auf der Leitung, oder du hast meine Frage falsch verstanden?
Warum bitte sollen meine VMs ein Problem bekommen, welche ja am ESXi laufen, wenn ich mir den Arbeitsplatz zersäge?

Ok,
da bin ich durcheinander gekommen. Ich war auf dem Trip das sie lokal laufen.
Gruss
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 25.10.2017, 16:58
von ~thc
jgreil hat geschrieben:Nachteil ist halt, dass eine durchgehend geöffnete RDP Verbindung durchaus Last verursacht und vor allem ein anderes "Verhalten" bewirkt, als wenn per VMware Remote Console direkt draufgeschaut wird.
Gegen die "Last" kann man nichts tun - falls du mit dem "Verhalten" meinst, dass es nicht die "Konsole" ist - auch das kann man per RDP erzwingen.
jgreil hat geschrieben:Als Behelfs-Lösung bzw. inoffizielles Tool würde ich VMware Workstation jetzt nicht bezeichnen. Es ist von VMware und bietet offiziell die Verbindung auf einen Remote Server an. Es funktioniert ja auch wirklich perfekt, nur ist es halt leider sehr mühsam, jedes mal alle VMs anzuklicken.
Das "Mühsame" kommt ja gerade daher, dass du eine Workstation, die primär für die Desktop-Virtualisierung gedacht ist, ausschließlich für die Fernwartung eines ESXi mit den VMs einsetzt. Würdest du die Workstation für ihre eigentliche Aufgabe einsetzen, hättest du das Problem nicht. Dann haben wir verschiedene Definitionen des Begriffs "Behelfs-Lösung".
jgreil hat geschrieben:Ein zusätzlicher Nachteil von RDP ist auch, dass man die VM erst ab Windows steuern kann.
Deswegen habe ich ja oben gefragt, was du mit den VMs bezweckst. Und da war von einer Steuerung außerhalb von Windows keine Rede.
jgreil hat geschrieben:Vielleicht sind meine Anforderungen nicht 0815, aber genau deshalb versuche ich ja hier eine Lösung mit ein paar Ideen von euch zu finden.
Deine Anforderungen sind extrem speziell. Da kann ich dir nicht weiterhelfen.
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 25.10.2017, 17:48
von jgreil
~thc hat geschrieben:Das "Mühsame" kommt ja gerade daher, dass du eine Workstation, die primär für die Desktop-Virtualisierung gedacht ist, ausschließlich für die Fernwartung eines ESXi mit den VMs einsetzt. Würdest du die Workstation für ihre eigentliche Aufgabe einsetzen, hättest du das Problem nicht. Dann haben wir verschiedene Definitionen des Begriffs "Behelfs-Lösung".
Das kann ich so nicht gelten lassen. Denn wenn ich VMware Workstation für den eigentlich gedachten Zweck einsetze, also die VMs lokal auf meiner Workstation laufen lasse, dann habe ich ganz genau das gleiche Problem!! Ich müsste beim Programmstart jede VM anklicken, damit sie geöffnet wird. Ich möchte einfach nur das automatisieren, dann wären auch alle anderen Punkte sofort damit gelöst.
Und ich finde jetzt absolut nicht, dass das eine "extrem spezielle Anforderung" ist, wenn man sich diese Clicks ersparen will.
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 26.10.2017, 08:23
von ~thc
Eigentliche Verwendung der Workstation: Wenige VMs (< 5) einschalten, damit arbeiten und wieder ausschalten.
Die "extrem spezielle Anforderung" ist im Gesamtkontext zu sehen: 10 Konsolenfenster der VMs, die den Status live anzeigen und das alles dann vollautomatisch nach dem Start der Anwendung.
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 26.10.2017, 12:47
von irix
Also ich wuerde hingehen und einfach die Screenshot des Konsolenfensters in 5min. Intervalen erstellen lassen (vCenter oder Host) und diese dann in einem HTML Dashboard zusammen fassen inkl. Zeitstempel so das man die Chance hat zu erkennen wenn da das Bild nicht mehr aktualisiert wird oder was auch immer.
Ich bilde mir ein das man damals per URL direkt auf den Screenshot zugreifen konnte und per Parameter auch die Groesse mitbestimmen konnte.
Gruss
Joerg
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 31.10.2017, 00:48
von jgreil
Ich habs inzwischen per Windows Batch File hinbekommen, vielleicht hilfts ja mal irgendwem.
Den Namen hinter "-M" (also z.B. "vm-39") konnte ich jetzt nur rausfinden, in dem ich den Link zu einer VM aus dem Workstation Programm auf den Desktop gezogen habe, wo dann eine Verknüpfung erstellt wurde (
vmrc://vCenter/?moid=vm-39) und dieser Name enthalten war.
Kann mir vielleicht jemand sagen, wie man einfacher zu diesem Namen kommt bzw. ob der irgendwo angezeigt wird?
Code: Alles auswählen
start "" "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe" -H vCenter -U Administrator@vCenter.DOMAIN -P password -M vm-39
timeout /t 5
start "" "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe" -H vCenter -U Administrator@vCenter.DOMAIN -P password -M vm-40
timeout /t 1
start "" "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe" -H vCenter -U Administrator@vCenter.DOMAIN -P password -M vm-41
timeout /t 1
start "" "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe" -H vCenter -U Administrator@vCenter.DOMAIN -P password -M vm-42
timeout /t 1
start "" "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe" -H vCenter -U Administrator@vCenter.DOMAIN -P password -M vm-128
timeout /t 1
start "" "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe" -H vCenter -U Administrator@vCenter.DOMAIN -P password -M vm-44
timeout /t 1
start "" "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe" -H vCenter -U Administrator@vCenter.DOMAIN -P password -M vm-143
timeout /t 1
start "" "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe" -H vCenter -U Administrator@vCenter.DOMAIN -P password -M vm-145
timeout /t 1
start "" "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe" -H vCenter -U Administrator@vCenter.DOMAIN -P password -M vm-146
timeout /t 1
start "" "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe" -H vCenter -U Administrator@vCenter.DOMAIN -P password -M vm-51
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 31.10.2017, 09:15
von mbreidenbach
Kann man mit PowerCLI auslesen. Hab gerade mal etwas rumgespielt; Get-VM liefert ja diverse Infos zur VM und im Feld 'Id' steht sowas wie VirtualMachine-vm-25221. Das 'Virtualmachine-' rausnehmen und man hat die Id.
Von PowerCLI aus startet das dann die Konsole:
Code: Alles auswählen
& 'C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe' -H vCenter -U User -P Kennwort -M ((get-vm 'NameDerVM').id -replace 'Virtualmachine-',''Für mehrere VMs kann man das dann etwa so machen:
Code: Alles auswählen
$vCenter = 'vCenter'
$User = 'User'
$Password = 'Password'
$VMList = @('VM1','VM2')
Connect-VIServer -Server $vCenter -User $User -Password $Password
ForEach ($VM in $VMList) {
$VMId = ((get-vm $VM).id -replace 'Virtualmachine-','')
& 'C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe' -H $vCenter -U $User -P $Password -M $VMid
}
<insert obligatorische Kommentare warum Paßwörter in Skripten hartkodiert irgendwie doof sind...>
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 31.10.2017, 10:01
von jgreil
Cool, vielen Danke

Muss man PowerCLI extra installieren, oder ist das schon irgendwie mitinstalliert?
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 31.10.2017, 10:16
von mbreidenbach
PowerCLI muß man installieren. Wenn man bereits die aktuellste PowerShell hat (also W10, W2016 oder was älteres mit Windows Management Framework 5.1) dann kann man das aus der PowerShell Gallery installieren:
PowerShell als Administrator öffnen
Code: Alles auswählen
Find-Module -Name VMware.PowerCLI
Install-Module -Name VMware.PowerCLI –Scope AllUsers
Aktualisieren kann man dann mit:
Module laden (falls das nicht automatisch geschieht):
Versionen der PowerCLI Module prüfen:
Code: Alles auswählen
Get-Module -Name VMware.* -ListAvailable | Select-Object -Property Name,VersionDamit kann man so ziemlich alles skripten was man vom vCenter aus so anstellen kann.
Link zum Cmdlet Reference:
http://pubs.vmware.com/vsphere-65/index.jsp?topic=%2Fcom.vmware.powercli.cmdletref.doc%2FOverview.htmlVMware PowerCLI Community Forum:
https://communities.vmware.com/community/vmtn/automationtools/powercliHab eben eine PowerCLI Funktion gefunden die VMRC aufruft und mal eingebaut für die Leute die keine Workstation haben:
Code: Alles auswählen
function Open-VMRC {
<#
.Synopsis
Function to replicate Open-VMConsoleWindow but use the VMware Remote Console Application
.Description
Connect to the virtual machine using the currently connected server object.
.Example
Get-VM "MyVM" | Open-VMRC
.Parameter VirtualMachine
Virtual Machine object
#>
#[CmdletBinding()]
param (
[Parameter(Mandatory=$true,ValueFromPipeline=$True)][VMware.VimAutomation.ViCore.Impl.V1.Inventory.InventoryItemImpl]$vm
)
$ServiceInstance = Get-View -Id ServiceInstance
$SessionManager = Get-View -Id $ServiceInstance.Content.SessionManager
$vmrcURI = "vmrc://clone:" + ($SessionManager.AcquireCloneTicket()) + "@" + $global:DefaultVIServer.Name + "/?moid=" + $vm.ExtensionData.MoRef.Value
Start-Process -FilePath $vmrcURI
}
# Open-VMRC taken from https://communities.vmware.com/thread/539980
$vCenter = 'vCenter'
$User = 'User'
$Password = 'Password''
$VMList = @('vm1',vm2')
Connect-VIServer -Server $vCenter -User $User -Password $Password
ForEach ($VM in $VMList) { Open-VMRC(Get-VM($VM)) }
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 31.10.2017, 11:13
von jgreil
Geil, vielen Dank für all die hilfreichen Sachen!!
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 31.10.2017, 15:08
von Dayworker
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 01.11.2017, 11:42
von Martin
Wenn Du erstmal nur die Übersicht über die "Bildschirme" brauchst und nicht gleich vollständige Remote Konsolen, könnte auch folgendes helfen:
https://github.com/eslindsey/esx-inventory(gefunden über
https://blogs.vmware.com/vsphere/2013/0 ... phere.html )
Re: Bei Programmstart: Automatisch zu VMs auf Server verbinden?
Verfasst: 02.11.2017, 20:10
von mbreidenbach
Ich habe eben mal gegoggelt nach etwas PowerShelliges womit man etwas via GUI aus einer Liste auswählen kann.... das tun wir in einen Topf, geben Open-VMRC und ein Get-VM hinzu, schlürfen etwas Ledaig, rühren einmal um und erhalten ein Skript welches eine Liste der VMs anzeigt und dann VMRC für die ausgewählte startet. Tadaa.
Vermutlich nicht elegant aber es tut.
Vorher Connect-VIServer ausführen.
Quellen dieses Plagiats in den Kommentaren.
Code: Alles auswählen
# ListBox: https://technet.microsoft.com/en-us/library/ee176968.aspx
# Open-VMRC: https://communities.vmware.com/thread/539980
function Open-VMRC {
<#
.Synopsis
Function to replicate Open-VMConsoleWindow but use the VMware Remote Console Application
.Description
Connect to the virtual machine using the currently connected server object.
.Example
Get-VM "MyVM" | Open-VMRC
.Parameter VirtualMachine
Virtual Machine object
#>
#[CmdletBinding()]
param (
[Parameter(Mandatory=$true,ValueFromPipeline=$True)][VMware.VimAutomation.ViCore.Impl.V1.Inventory.InventoryItemImpl]$vm
)
$ServiceInstance = Get-View -Id ServiceInstance
$SessionManager = Get-View -Id $ServiceInstance.Content.SessionManager
$vmrcURI = "vmrc://clone:" + ($SessionManager.AcquireCloneTicket()) + "@" + $global:DefaultVIServer.Name + "/?moid=" + $vm.ExtensionData.MoRef.Value
Start-Process -FilePath $vmrcURI
}
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "Select a Computer"
$objForm.Size = New-Object System.Drawing.Size(300,200)
$objForm.StartPosition = "CenterScreen"
$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
{$x=$objListBox.SelectedItem;$objForm.Close()}})
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
{$objForm.Close()}})
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Add_Click({$x=$objListBox.SelectedItem;$objForm.Close()})
$objForm.Controls.Add($OKButton)
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(150,120)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Cancel"
$CancelButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($CancelButton)
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,20)
$objLabel.Size = New-Object System.Drawing.Size(280,20)
$objLabel.Text = "Please select a Virtual Machine:"
$objForm.Controls.Add($objLabel)
$objListBox = New-Object System.Windows.Forms.ListBox
$objListBox.Location = New-Object System.Drawing.Size(10,40)
$objListBox.Size = New-Object System.Drawing.Size(260,20)
$objListBox.Height = 80
$VMs = (Get-VM).Name | Sort-Object
ForEach ($VM in $VMs) {
[void] $objListBox.Items.Add($VM)
}
$objForm.Controls.Add($objListBox)
$objForm.Topmost = $True
$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()
if ($objListBox.SelectedItem) {open-vmrc(Get-VM($objListBox.SelectedItem))}