GUI Forms PowerShell
Creating GUI forms with PowerShell can be done using the Windows Presentation Foundation (WPF) or Windows Forms libraries. . Windows PowerShell also supports building of Graphical User Interface (Forms). Many of the GUI administration tools available are scripted in PowerShell. There are many commercial and free tools available in the market, but let us see how to build a GUI form with PowerShell scripting.
Let us build a simple form now.
There are only three things required to launch a form from PowerShell:
- Load the System.Windows.Forms assembly;
- Create a new object of type system.windows.forms.form
- Call the ShowDialog() method on your new object.
Add-Type -AssemblyName System.Windows.Forms
$Form = New-Object system.Windows.Forms.Form
$Form.ShowDialog()
Save the above code and run the code. You can see a GUI Form like the following:
Let us add some more features to our form.
$Form.Height = 500
$Form.Width = 500
the above code will change the size of our form to 500 x 500.

Now, let us add some more controls to our form.
Let is add some more functionality to our form.
Save and run the code with PowerShell. On clicking the button, the textbox field will be updated with the Operating System Name of the current machine
Let is break down the code:
Create the form:
Add-Type -AssemblyName System.Windows.Forms ## adding the assembly
$Form = New-Object system.Windows.Forms.Form ## we are defining the form here
$Form.Height = 200 ## Form heoght
$Form.Width = 400 ## Form width
Create Label control:
$Label1 = New-Object system.Windows.Forms.Label ## Create Label
$Label1.text = “Click the button to get OS details” ## Label text that will be displayed
$Label1.width = 25 ## Label width
$Label1.height = 10 ## Label height
$Label1.location = New-Object System.Drawing.Point(20,40) ## Label Position
Create TextBox Control:
$TextBox1 = New-Object system.Windows.Forms.TextBox ## Create TextBox
$TextBox1.multiline = $false ## restricting the text to a single line. make this $true if you want to maek a multiline textbox and define number of lines.
$TextBox1.width = 300 ## width
$TextBox1.height = 20 ## height
$TextBox1.location = New-Object System.Drawing.Point(20,80) ## position
Create Button Control:
$Button1 = New-Object system.Windows.Forms.Button ## create Button control
$Button1.text = “Click me!” ## Button Text that will be displayed
$Button1.width = 80 ## Button width
$Button1.height = 30 ## Button height
$Button1.location = New-Object System.Drawing.Point(257,34) ## Button Position
Add Controls to the Form:
$Form.controls.AddRange(@($Label1,$TextBox1,$Button1)) ## this line will add the controls created in previous steps.
Add Button Click action:
$Button1.Add_Click({ $TextBox1.Text = (Get-WmiObject win32_operatingsystem).Caption; })
Show the Form:
$Form.ShowDialog()
Here are some of the GUI designer tools that you can try. I will add more in the future. You can try the following tools for building GUI utilities.