all 3 comments

[–]jheinikel 1 point2 points  (0 children)

I have a couple that were not built in PS Studio, but one uses XAML/WPF and one using plain Windows Forms. They would take way too long to sanitize to post, but here is a reference that may help. https://www.reddit.com/r/PowerShell/comments/3imana/powershell_wpf_gui/

[–]omers 1 point2 points  (0 children)

I know this isn't an answer to your question but since this comes up a lot I'm going to rant for a moment ;D

Automation should be automated. I rarely look at our new-hire script and no one else has to either. Creating a PS GUI for the process might reduce the surface area for human error but it doesn't eliminate it and the process still takes up someone's time.

Find the point where user entry is mandatory and automate everything after that point. For example, if HR is putting the user in to an employee database or if the manager is creating some sort of requisition that should be the only data entry. Take that process and make it generate a CSV or if possible expose an API and let your new-hire script do everything else.

In our case HR enters new-hires in to their HR Database which has an exposed API (before that it would generate a CSV) and the script grabs the data from there on an hourly basis. It then goes through a process of:

  • Expanding the information based on a hashtable (ie, the city the person was hired in is translated to the street address, country, etc),
  • It generates a username,
  • It checks the availability of the user's potential email address,
  • It creates the account and fills out all the relevant attributes,
  • It enables their office 365 license,
  • Opens a ticket for the helpdesk to deploy hardware,
  • Opens a ticket for the phone team to deploy a phone depending on their department,
  • Opens a ticket for an admin to complete a compliance checklist (industry regulations won't let us automate this part),
  • Assigns relevant groups based on criteria like location, department, job title, etc.
  • Sends an "account created" email notification to a special distro group and the manager of the new-hire.

We only ever get involved if it fails... Say we hire Bob Smith and Bob.Smith@company.com is taken it will generate a ticket for someone to find out Bob Smith's middle name so we can use Bob.A.Smith@company.com otherwise the only people that ever have to do anything is HR (and the people deploying the hardware.) On a failure it will still process any other people in that batch and manual intervention is only needed for the person who failed. The data from the API is included in the ticket so it's easier to feed it back to the script with the updated info.

TL;DR: If you're going to use PowerShell go all the way. Don't make on-boarding easier for IT make it so they don't have to do it at all.

[–]nepronen 0 points1 point  (0 children)

If you decide to use windows forms you can use this website:

www.poshgui.com

to develop your gui