# encoding: utf-8 # api: powershell # title: vmrc remote connector # description: Connects with VMRC to an ESX Farm. Now with option to allow multiple connections to one vm # version: 0.1 # type: script # author: Patrick # license: CC0 # x-poshcode-id: 1527 # x-archived: 2016-05-20T09:58:30 # x-published: 2010-12-13T23:45:00 # # #region Global var $script:viserver = "esx.local" $script:vmrc = "C:\Program Files\VMwareVMRC\vmware-vmrc.exe" $script:vm = "" $script:vmt = "" $script:vmcon = "" $script:selectvm = "" $script:multiple = $FALSE #Set to TRUE for multiple VMRC Instances #endregion $vmcon = Connect-VIServer -Server $script:viserver -Protocol https -Credential (Get-Credential) if (!$vmcon) { Write-Output "No Connection!" break } $script:vmt = Get-VM function GenerateForm { #region Import the Assembles [reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null [reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null #endregion #region Generated Form Objects $form1 = New-Object System.Windows.Forms.Form $btnConnect = New-Object System.Windows.Forms.Button $txtEntity = New-Object System.Windows.Forms.TextBox $chkIP = New-Object System.Windows.Forms.CheckBox $comboBox1 = New-Object System.Windows.Forms.ComboBox #endregion Generated Form Objects $btnConnect_OnClick= { #region Check User Inputs if (!$txtEntity.Text -eq "" -and !$comboBox1.Text -eq "") { Write-Host "Bitte nur eine Option anwählen!" break } #endregion if ($txtEntity.Text -eq "") { $script:selectvm = $comboBox1.Text } else { $script:selectvm = $txtEntity.Text } if ($chkIP.Checked) { $script:chk = "FALSE" foreach ($script:vm in $script:vmt) { $vmg = Get-VMGuest $script:vm if ($vmg.IPAddress -eq $script:selectvm) { $script:chk = "" break } } } If (!$script:selectvm -eq "" -and !$chkIP.Checked) { $script:vm = Get-VM $script:selectvm if($script:vm.Count) { Write-Output "Define only one host!" break } else { if (!$script:vm.id) { Write-Output "No VM found" $script:chk = "FALSE"; break } } } if (!$script:chk) { if (!$script:vm -eq "") { if (!($script:gvm = Get-View $script:vm.id) -eq "") { if (($multiple) -or (!($multiple) -and $script:gvm.Runtime.NumMksConnections -lt 1)) { $vmrcargs = '-h ' + $script:vm.Host + ' -m "' + $script:gvm.Config.Files.VmPathName + '"' [Diagnostics.Process]::Start($script:vmrc, $vmrcargs) } } } } } #---------------------------------------------- #region Generated Form Code $form1.Text = 'VMware Remote Connector' $form1.Name = 'form1' $form1.DataBindings.DefaultDataSourceUpdateMode = 0 $System_Drawing_Size = New-Object System.Drawing.Size $System_Drawing_Size.Height = 193 $System_Drawing_Size.Width = 281 $form1.ClientSize = $System_Drawing_Size $form1.FormBorderStyle = 1 $btnConnect.TabIndex = 2 $System_Drawing_Size = New-Object System.Drawing.Size $System_Drawing_Size.Height = 23 $System_Drawing_Size.Width = 75 $btnConnect.Size = $System_Drawing_Size $btnConnect.Name = 'btnConnect' $btnConnect.UseVisualStyleBackColor = $True $btnConnect.Text = 'Verbinden' $System_Drawing_Point = New-Object System.Drawing.Point $System_Drawing_Point.X = 97 $System_Drawing_Point.Y = 115 $btnConnect.Location = $System_Drawing_Point $btnConnect.DataBindings.DefaultDataSourceUpdateMode = 0 $btnConnect.add_Click($btnConnect_OnClick) $form1.Controls.Add($btnConnect) $System_Drawing_Point = New-Object System.Drawing.Point $System_Drawing_Point.X = 12 $System_Drawing_Point.Y = 17 $txtEntity.Location = $System_Drawing_Point $System_Drawing_Size = New-Object System.Drawing.Size $System_Drawing_Size.Height = 20 $System_Drawing_Size.Width = 261 $txtEntity.Size = $System_Drawing_Size $txtEntity.DataBindings.DefaultDataSourceUpdateMode = 0 $txtEntity.Name = 'txtEntity' $txtEntity.TabIndex = 1 $form1.Controls.Add($txtEntity) $chkIP.TabIndex = 0 $System_Drawing_Size = New-Object System.Drawing.Size $System_Drawing_Size.Height = 19 $System_Drawing_Size.Width = 160 $chkIP.Size = $System_Drawing_Size $chkIP.Name = 'chkIP' $chkIP.UseVisualStyleBackColor = $True $chkIP.Text = 'IP Adresse' $System_Drawing_Point = New-Object System.Drawing.Point $System_Drawing_Point.X = 12 $System_Drawing_Point.Y = 43 $chkIP.Location = $System_Drawing_Point $chkIP.DataBindings.DefaultDataSourceUpdateMode = 0 $form1.Controls.Add($chkIP) $System_Drawing_Point = New-Object System.Drawing.Point $System_Drawing_Point.X = 12 $System_Drawing_Point.Y = 73 $comboBox1.Location = $System_Drawing_Point $comboBox1.DataBindings.DefaultDataSourceUpdateMode = 0 $comboBox1.FormattingEnabled = $True $comboBox1.Name = 'comboBox1' $comboBox1.TabIndex = 0 #Get all VM foreach ($cvm in $script:vmt) { $comboBox1.Items.Add($cvm.Name) | Out-Null } $System_Drawing_Size = New-Object System.Drawing.Size $System_Drawing_Size.Height = 20 $System_Drawing_Size.Width = 261 $comboBox1.Size = $System_Drawing_Size $form1.Controls.Add($comboBox1) #endregion Generated Form Code #Show the Form $form1.ShowDialog()| Out-Null } GenerateForm