As a PowerShell person I’m personally not a big fan of creating a GUI for PowerShell scripts. This is however something that is asked a lot when PowerShell scripts are created for by example provisioning new users.
I’ve seen many different approaches to this. Most worked around it either by using Read-Host or creating a GUI inside their function. In some cases these approaches also meant that the function could not handle pipeline input, multiple inputs, etc. So basically they automated one thing, but prevented further automation by implementing the GUI in a stupid way.
Personally I prefer to keep my functions without a GUI. If it is desired or required, the GUI code will be written outside of the function and will result in the calling of the function with the values specified in the GUI. This way the GUI part will not pollute the function and users have more choice and flexibility to achieve their goal. You could compare it to how you normally handle output. You output objects and let users handle the formatting instead of providing them with by example the output in Format-Table.
Now the approach is clear, the GUI still needs to be created. There are multiple ways to go about this. You could by example create the GUI by looking up what exactly you need to code to get the desired result or you could use (paid) 3rd party tools / services. You could by example use the free web-based service POSHGUI to visually create your form and then have it output your needed code. There are however also (paid) editors like Visual Studio or PowerShell Studio. Another very simple method in some cases is using Out-Gridview with -PassThru. For more info, see also my previous blog post Summary of 2nd Dutch PowerShell User Group – DuPSUG meeting with additional resources
In my case I created my initial GUI form with POSHGUI. Even though you can do many more advanced GUI forms, I soon realized that I was always creating the same type of GUI form that consisted of a couple of text boxes and a submit button. Creating these manually become an annoyance very quickly. That’s why I decided to create a function to dynamically create such a GUI based on my input.
The result is this:
The code itself can be found on my GitHub: https://github.com/bjornhouben/PowerShell/blob/master/General/GUI/New-SimpleGUIForm.ps1
I hope you like it and find it useful.
Tags: graphical user interface, gui, Microsoft, POSHGUI, Powershell, Windows Presentation Foundation, WPF
Before starting with my summary of 2nd DuPSUG meeting, I want to inform you about some future events first:
- Dutch PowerShell User Group Meetings
- To keep track of news, use the links to LinkedIn, Facebook, Twitter and the RSS feed on the DUPSUG website.
- In the future, the plan is to meet every June and November.
- The next meeting will probably be at November 7th at VX Company.
- The idea is that community members will also present their own experiences, use cases, scripts, tools, methods. If you want to do so, please contact the DUPSUG group.
- Remko Weijnen | Blog | Twitter | LinkedIn might be one of the people presenting at a future DUPSUG meeting.
- Jeff Wouters might be able to arrange one or more copies of the PowerShell Deep Dives book from Manning since he’s contributing to it. The book isn’t complete and released yet, but Manning has an Early Access Program which means that you will get access to the completed chapters now and will get the full version when it’s done. Until June 13 there’s even a promotion to get a 40%-50% discount and it also applies to other great PowerShell books.
- Inter Access Microsoft Summer Summit (Hilversum, July 2nd 2013 17:30-22:00 CET)
Last Thursday I attended the second Dutch Powershell User Group meeting in Hilversum hosted at Inter Access and sponsored by Sapien Technologies Inc.
Just like I mentioned in the summary of the first meeting there were manu interesting sessions that provided me with more insight and inspired me for practical uses. It was also great to discuss current developments with other knowledgeable and passionate people. The main differences with the previous meeting was that:
- This meeting was completely in Dutch, while the previous one was completely in English. As such, the workshop descriptions were also in Dutch and you needed to bring your own laptop.
- The format of this meeting was more of a workshop, while the previous one was mainly presentations.
Thanks go out to all attendees, especially those presenting, organizing and sponsoring the event. Special thanks to Daniel Bot for helping me fix a (stupid mistake in a) script I was working on 🙂
Goodies and giveaways
Workshops / presentations
And now on with the really interesting stuff, the sessions/workshops. Below are the sessions with some info about the speakers and their sessions. I also added notes I took and other information I looked up afterwards. If you come across any errors or have comments, please leave a reply so I can fix it.
Read the rest of this entry »
Tags: $PSBoundParameters, -asjob, -passthru, Azure, background jobs, Cloud, Compliance Settings, DCM, Desired Configuration Management, Desired State Configuration, devops, DHCP, DHCP failover, DNS, DSC, DuPSUG, Dutch PowerShell User Group, error handling, Event, Exe, Filters, flickr, forms, Functions, graphical user interface, gui, GUI applications, high availability, Hilversum, HTA, HTML Application, Integrated Scripting Environment, Inter Access Microsoft Summer Summit, InterAccess, InterAccess Microsoft Summer Summit, Interface Video Training, IPv4, ISE, Jaap Brasser, Jeff Wouters, job, jobs, Manning, module, msi, nslookup, Out-Gridview, parallel, parallelization, passthrough, Ping, PowerGUI, Powershell, PowerShell 3, Powershell 3.0, PowerShell 4.0, PowerShell Deep Dives, PowerShell GUI, PowerShell GUI applications, PowerShell Runspace, PowerShell RunSpaces, Powershell v3, PowerShell Workflow, presentation, PS2Exe, Resolve-DNSName, Richard Siddaway, runspace, runspaces, SCCM, script block, script blocks, scriptblock, scriptblocks, ShowUI, splat, splatting, System Center Configruation Manager, Test-Connection, The MSI Wizard, VisualStudio, VX Company, Windows, Windows 2012, Windows 2012 Server, Windows 8.1, Windows Forms, Windows Presentation Foundation, Windows Server 2012, Windows Server 2012 R2, WinForms, workflow, workshop, WPF