title: Powershell Forms refresh GUI
body: <p>The script is a simple administration tool to indicate the status of three windows services and to toggle them.</p>
  
  <p>Everything works fine but I don't get it done to implement the refreshment of the GUI.</p>
  
  <p>I want to show up the related status in labels and to hide the non-clickable buttons. I was playing around so far with a timer, but the GUI still doesn't refresh..</p>
  
  <pre><code>#variables
  $ums = get-service "UMS Server"
  $mySQL = get-service "mySQL56"
  $maria = get-service "MariaDB_10.1.21"
  
  function OnApplicationLoad {
  return $true 
  }
  function OnApplicationExit {
  $script:ExitCode = 0 
  }
  
  
  
  function generateForm {
  Add-Type -AssemblyName System.Windows.Forms
  
  
  $UMSDatabaseadministration = New-Object system.Windows.Forms.Form
  $UMSDatabaseadministration.Text = "UMS Database administration"
  $UMSDatabaseadministration.TopMost = $true
  $UMSDatabaseadministration.Width = 614
  $UMSDatabaseadministration.Height = 316
  $UMSDatabaseadministration.StartPosition = "CenterScreen"
  
  $timer = New-Object System.Windows.Forms.Timer #$UMSDatabaseadministration
  $timer.Interval = 1000  # once per second
  $timer.Add_Tick({ $UMSDatabaseadministration.Refresh() })
  
  
  #button 1 start UMS
  $button11 = New-Object system.windows.Forms.Button
  $button11.Text = "start"
  $button11.Width = 60
  $button11.Height = 30
  
  if ($ums.Status -eq "Running"){
  $button11.visible = $false
  }
  $button11.Add_Click({
                          $ums.start()
  
  
                          })
  $button11.location = new-object system.drawing.point(303,38)
  $button11.Font = "Microsoft Sans Serif,10"
  $UMSDatabaseadministration.controls.Add($button11)
  
  #button 2 stop UMS
  $button15 = New-Object system.windows.Forms.Button
  $button15.Text = "stop"
  $button15.Width = 60
  $button15.Height = 30
  
  if ($ums.Status -eq "Stopped"){
  $button15.visible = $false
  }
  $button15.Add_Click({$ums.stop()})
  $button15.location = new-object system.drawing.point(409,39)
  $button15.Font = "Microsoft Sans Serif,10"
  $UMSDatabaseadministration.controls.Add($button15)
  
  #button 3 start mySQL
  $button12 = New-Object system.windows.Forms.Button
  $button12.Text = "start"
  $button12.Width = 60
  $button12.Height = 30
  
  if ($maria.Status -eq "Running" -Or $mySQL.Status -eq "Running"){
  $button12.visible = $false
  }
  $button12.Add_Click({$mySQL.start()})
  $button12.location = new-object system.drawing.point(303,98)
  $button12.Font = "Microsoft Sans Serif,10"
  $UMSDatabaseadministration.controls.Add($button12)
  
  #button 4 stop mySQL
  $button14 = New-Object system.windows.Forms.Button
  $button14.Text = "stop"
  $button14.Width = 60
  $button14.Height = 30
  
  if ($mySQL.Status -eq "Stopped"){
  $button14.visible = $false
  }
  $button14.Add_Click({$mySQL.stop()})
  $button14.location = new-object system.drawing.point(410,99)
  $button14.Font = "Microsoft Sans Serif,10"
  $UMSDatabaseadministration.controls.Add($button14)
  
  #button 5 start mariaDB
  $button13 = New-Object system.windows.Forms.Button
  $button13.Text = "start"
  $button13.Width = 60
  $button13.Height = 30
  
  if ($mySQL.Status -eq "Running" -Or $maria.Status -eq "Running"){
  $button13.visible = $false
  }
  $button13.Add_Click({$maria.start()})
  $button13.location = new-object system.drawing.point(302,147)
  $button13.Font = "Microsoft Sans Serif,10"
  $UMSDatabaseadministration.controls.Add($button13)
  
  
  
  #button 6 stop mariaDB
  $button16 = New-Object system.windows.Forms.Button
  $button16.Text = "stop"
  $button16.Width = 60
  $button16.Height = 30
  
  if ($maria.Status -eq "Stopped"){
  $button16.visible = $false
  }
  $button16.Add_Click({$maria.stop()})
  $button16.location = new-object system.drawing.point(410,148)
  $button16.Font = "Microsoft Sans Serif,10"
  $UMSDatabaseadministration.controls.Add($button16)
  
  
  $button17 = New-Object system.windows.Forms.Button
  $button17.Text = "shut down UMS Server and toggle DB`'s"
  
  $button17.Add_Click({ 
  
  #variables
  $ums = get-service "UMS Server"
  $mySQL = get-service "mySQL56"
  $maria = get-service "MariaDB_10.1.21"
  
  if ($ums.Status -eq "Running") {$ums.stop()}
  
  if ($mySQL.Status -eq "Running") {$mySQL.stop(); $maria.start()}
  
  if ($maria.Status -eq "Running") {$maria.stop(); $mySQL.start()}
  
  })
  
  
  $button17.Width = 166
  $button17.Height = 42
  $button17.location = new-object system.drawing.point(303,209)
  $button17.Font = "Microsoft Sans Serif,10"
  $UMSDatabaseadministration.controls.Add($button17)
  
  
  
  $label18 = New-Object system.windows.Forms.Label
  $label18.Text = "UMS Server is:"
  $label18.AutoSize = $true
  $label18.Width = 25
  $label18.Height = 10
  $label18.location = new-object system.drawing.point(33,38)
  $label18.Font = "Microsoft Sans Serif,10"
  $UMSDatabaseadministration.controls.Add($label18)
  
  
  $label19 = New-Object system.windows.Forms.Label
  $label19.Text = "mySQL is:"
  $label19.AutoSize = $true
  $label19.Width = 25
  $label19.Height = 10
  $label19.location = new-object system.drawing.point(33,95)
  $label19.Font = "Microsoft Sans Serif,10"
  $UMSDatabaseadministration.controls.Add($label19)
  
  
  $label20 = New-Object system.windows.Forms.Label
  $label20.Text = "mariaDB is:"
  $label20.AutoSize = $true
  $label20.Width = 25
  $label20.Height = 10
  $label20.location = new-object system.drawing.point(34,146)
  $label20.Font = "Microsoft Sans Serif,10"
  $UMSDatabaseadministration.controls.Add($label20)
  
  #status UMS red
  $label24 = New-Object system.windows.Forms.Label
  $label24.Text = $ums.status
  $label24.AutoSize = $true
  $label24.ForeColor = "#fe0004"
  $label24.Width = 25
  $label24.Height = 10
  
  if ($ums.status -eq "Running"){
  $label24.visible = $false
  }
  $label24.location = new-object system.drawing.point(152,37)
  $label24.Font = "Microsoft Sans Serif,10"
  $UMSDatabaseadministration.controls.Add($label24)
  
  #status UMS green
  $label25 = New-Object system.windows.Forms.Label
  $label25.Text = $ums.status
  $label25.AutoSize = $true
  $label25.ForeColor = "#149600"
  $label25.Width = 25
  $label25.Height = 10
  
  if ($ums.status -eq "Stopped"){
  $label25.visible = $false
  }
  $label25.location = new-object system.drawing.point(153,40)
  $label25.Font = "Microsoft Sans Serif,10"
  $UMSDatabaseadministration.controls.Add($label25)
  
  #status mySQL red
  $label26 = New-Object system.windows.Forms.Label
  $label26.Text = $mySQL.status
  $label26.AutoSize = $true
  $label26.ForeColor = "#ff0004"
  $label26.Width = 25
  $label26.Height = 10
  
  if ($mySQL.status -eq "Running"){
  $label26.visible = $false
  }
  $label26.location = new-object system.drawing.point(152,94)
  $label26.Font = "Microsoft Sans Serif,10"
  $UMSDatabaseadministration.controls.Add($label26)
  
  #status mySQL green
  $label27 = New-Object system.windows.Forms.Label
  $label27.Text = $mySQL.status
  $label27.AutoSize = $true
  $label27.ForeColor = "#149600"
  $label27.Width = 25
  $label27.Height = 10
  
  if ($mySQL.status -eq "Stopped"){
  $label27.visible = $false
  }
  $label27.location = new-object system.drawing.point(152,96)
  $label27.Font = "Microsoft Sans Serif,10"
  $UMSDatabaseadministration.controls.Add($label27)
  
  #status mariaDB red
  $label28 = New-Object system.windows.Forms.Label
  $label28.Text = $maria.status
  $label28.AutoSize = $true
  $label28.ForeColor = "#ff0004"
  $label28.Width = 25
  $label28.Height = 10
  
  if ($maria.status -eq "Running"){
  $label28.visible = $false
  }
  $label28.location = new-object system.drawing.point(151,145)
  $label28.Font = "Microsoft Sans Serif,10"
  $UMSDatabaseadministration.controls.Add($label28)
  
  #status mariaDB green
  $label29 = New-Object system.windows.Forms.Label
  $label29.Text = $maria.status
  $label29.AutoSize = $true
  $label29.ForeColor = "#149600"
  $label29.Width = 25
  $label29.Height = 10
  
  if ($maria.status -eq "Stopped"){
  $label29.visible = $false
  }
  $label29.location = new-object system.drawing.point(151,145)
  $label29.Font = "Microsoft Sans Serif,10"
  $UMSDatabaseadministration.controls.Add($label29)
  
  
  [void]
  $UMSDatabaseadministration.ShowDialog()
  $UMSDatabaseadministration.Dispose()
  
  
  }
  
  
  
  if(OnApplicationLoad -eq $true)
  {
  GenerateForm | Out-Null
  $timer.Start()
  OnApplicationExit
  }
  </code></pre>