vmrc remote connector by Patrick 26 months ago
embed code: <script type="text/javascript" src="http://PoshCode.org/embed/1527"></script>download | new post
Connects with VMRC to an ESX Farm. Now with option to allow multiple connections to one vm
- #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
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.
PowerShell Code Repository