SelfX (Self fix): a tool allowing users to solve their issues themselves and reduce tickets/calls to your support team

8 A+ A-

In this post I will show you a tool allowing you to reduce number of tickets/calls to support by allowing users to solve their issues by themself before contacting support.


- There are a lot of tickets/calls to support

- Many can be solved without admin rights

- You want to avoid call to support

- You want users can solve issue themselves

- You want to add yourself a list of issues


Easy to install

The solution can be deployed through Intune, MECM or whatever you want.

The only step is to use sources and install PS1. 

We will see the install process later in the post.

Reduce support tickets/calls number

The idea of the tool is that when a user has an issue on his device, he will first run the tool to check if something corresponds to his issue.

If yes he just has to click on a button to solve the issue by himself without calling support team.

User will be able to solve issue that does not need admin rights to be solved.

The goal is then to solve/avoid all basic tickets/call to 1st, 2nd support level depening of your support team organization.

Easy to update/manage

All issues in the tool are displayed through an XML file.

This way, you can really easily add a new issue in the tool by adding a new file.

Indeed the idea is that I provide the main tool with some issues ideas and then you add your own issues depending of your IT infrastructure.


Everything in the tool can be managed through an XML file.

You can then customize issues list, title, text in buttons...

Issues list location

All issues are location in an XML file.

This XML is by default located locally.

It's also possible to use it from the Web, like blob storage.

Easy to use

The tool is really easy to use for a user.

He just has to scroll down the list of action and search if he finds something relative to his issue.

A search bar also allows him to filter on issues.

The solution

What is the goal ?

The idea of the tool is, as may know, you can automate a lot of things.

When a user has an issue you solve it manually, however it can be done through PowerShell.

For instance let's take some examples:

- User has sync issue with OneDrive

- Status on Teams is not correct

- Message content on Teams is not displated correctly

- Teams meeting button is missing in Outlook

- Teams is freezing on audio conversation

- Teams camera is frozen/invisible

- Device is running slow

All those issues can be solved with PowerShell.

The user GUI

The solution is to provide a GUI to user displaying different lines.

Each line corresponds to a specific issue.

All issues are organized in different categories like OneDrive, Teams, Outlook, Device...

Each line contains two buttons:

- Run an action

- Show an explanation

If the user clicks on the first button, a script is executed in background to solve the issue.

Of course each script is executed without admin right.

You can add as many actions or categories you want in the tool. 

Indeed everything is managed just with an XML file: actions list, title, subtitle...

Note: I provided a list of actions in the XML but the idea is you add your own issues in the XML. Indeed issues depend of your context, for instance we don't have the same VPN client, office version...

How does it work ?

1. After installing the tool a SelfX folder is created in %localappdata%.

2. It contains sources: PS1, XAML, the XML issues list...

3. Shortcut will be available on desktop and start menu

4. After running the shortcut, a GUI will be displayed

5. The GUI will load content from XML

We will see the GUI in details later.

Adding issues

As mentioned before, the GUI displays a list of issues.

All issues are provided through an XML file, nothing to do in the PS1 or XAML.

The XML is located in %localappdata%\SelfX\Issues_List.xml

Note: I provided a list list of actions in the XML but the idea is you add your own issues in the XML. Indeed issues depend of your context, for instance we don't have the same VPN client, office version...

Adding a new action in the list can be achieved in 2 steps:

- Add new node in the XML

- Copy PS1 in the Script_to_run folder

XML node is composed as below:

- Name: text displayed in the list

- Explanation: warning after clicking on the 2nd button

- Script: file executed after clicking on the 1st button

- Category: category of the action 

- Alerte_MSG: warning after clicking on the 1st button

In the below example I want to add an action allowing user to run a gpupdate.

For this, I will:

- Add new category called device 

- Display action: Update Active Directory policies

See below the appropriate node:

Then we will need to add our script in the Scripts_to_run folder.

When you run again the shortcut, you will see the new action as below:

There are two ways to get list of issues in the tool:

- Locally

- From the web (like blob storage)


In this case proceed as below:

1. Edit the Issues_List.xml file

2. Go to XML_Version

3. Type your XML version (depending of your change)

4. Add your issues

5. Copy script in Scripts_to_run folder

From the web

In this case proceed as below:

1. Edit the Issues_List.xml file

2. Go to XML_Version

3. Type your XML version (depending of your change)

4. Add your issues

5. Copy script in Scripts_to_run folder

6. ZIP content of Scripts_to_run folder

7. Upload the ZIP somewhere (for me a blob storage)

8. Get path of the ZIP from the web

9. In Link_Scripts copy this path

If you use this way, each time the user will run SelfX, it will first get XML from the web and check if this is the latest version.

How it looks like ?

The GUI looks like as below:

For each category an expander is created, as below:

Each nodes in the XML is displayed in the appropriate category, as below:

Each line contains two buttons as below:

A legend at the top explains what does each button:

When user clicks on the run button a warning is displayed, as below:

When user clicks on the run explanation a warning is displayed, as below:

A search button at the top, in the title bar allows you to filter on issues.

After clicking on it, the below window will be displayed

Choose the category of the issue, then type a key word.

Changing language
As mentioned previously, you can easily change the language of the GUI by managing an XML file.

For that proceed as below:
1. Edit the file Issues_List.xml
2. Go to the node GUI_Config
3. The main GUI looks like as below:

See below properties from the XML corresponding to the GUI.
To change with your language, just edit content from XML.

See below how to change language for the filter issues part:

Changing tool color
You can easily customize the color of the tool.
By default the color is Cyan, as below:

To change it, proceed as below:
1. Edit the Issues_List.xml file
2. Search following node: Tool_Color
3. Add color you want
4. Here below I changed it to Red
5. See below the result:

Available colors: Red, Green, Blue, Purple, Orange, Lime, Emerald, Teal, Cyan, Cobalt, Indigo, Violet, Pink, Magenta, Crimson, Amber, Yellow, Brown, Olive, Steel, Mauve, Taupe, Sienna 

Changing icon location
You can choose if you want to add an icon to desktop and start menu.
For this proceed as below:
1. Edit the Issues_List.xml file
2. Set below node to True or False
- Shortcut_Desktop
- Shortcut_StartMenu

Install toast notif
You can display a toast notification to users informing them a new tool is available on their devices.
For this proceed as below:
1. Edit the Issues_List.xml file
2. Set Show_Install_Toast to True or False
3. Configure the notif with below nodes:

4. See below how to use them:

5. See below an overview of the toast notif

Adding support info part
You can add a button allowing user to see information about help desk, support team.
See below an overview of this part :

To add it we will proceed as below:
1. Edit the Issues_List.xml file
2. Search node Show_Support_Button
3. Set it to True
4. Configure support info using below node:
- Support_Phone_number
- Support_Mail_Label

You can also configure language of the text.
See below how to customize this part using the Issues_List.xml

How to get it ?

Click on the below GitHub picture to dowload the tool

How to install it ?

We will proceed as below:

1. Add your issues as above

2. Run Install_tool.ps1 without admin rights

If you use the XML list on the web proceed as below:

1. Add your issues as above

2. Run Install_tool.ps1 with parameter XML_Link

3. In XML_Link add path of the XML from web

4. In my case it's located on blob storage

Implement with Intune

Creating the package

1. Update Issues_List.xml with your issues

2. Download the tool here

3. Run Intunewin Create and Extract (EXE or desktop shortcut)

4. Go to Build tab

5. Go to Package sources part 

6. Click on Browse

7. Select the folder containing your application

8. Go to Application name

9. Select Install_tool.ps1

10. Go to Location part

11. Click on the Browse button

12. Select the folder where to save the intunewin package

13. Click on Build the intunewin package

14. Create a new Win32 app in Intune

15. Integrate the new intunewin created

Integrating in Intune

1. Go to Intune

2. Go to Client apps

3. Go to Apps

4. Click on Add

5. Select Windows app (Win32)

6. Browse to the intunewin

7. Click on OK

8. Click on App information > Configure

9. Select install as user

10. Type informations, as below:

11. Click on OK

12. Click on Program > Configure

13. In Install command type this:

14. In Uninstall command type the same

15. Click on OK

16. Click on Requirements > Configure

17. Type your requirements

18. Click on OK

19. Click on Detection rules > Configure

20. Select Use a custom detection script

21. In script file select Intune_Detection_Script.ps1

22. Click on Next

23. Click on OK twice

24. Click on Add

Assign the app

1. Go to Assignments

2. Click on Add group

3. Assign as you want

What's next ?

SelfX admin

I will soon provide another version allowing users to solve issues requiring admin rights.

Don't worry no risks because there is nothing open as system to the user like explorer, command prompt...

SelfX Chat

I'm also working on a ChatBot version fully built in PowerShell.

Feedback needed

If you have implemented SelfX to your company, all feedback are welcome.

I'm really interested to see if your tickets number have been reduced since the implementation.

For that send me a mail at damien.vanrobaeys@gmail.com or a tweet to @Self__x

slider 5265242331764846992

Enregistrer un commentaire

8 commentaires

Anonyme a dit…

Awesome!!! Thanks for doing all this

Anonyme a dit…

you have no idea how much my self and community apricate you, your next level thinking is mind blasting

Anonyme a dit…

Not sure if I'm missing something, but where's the download link?

Damien Van Robaeys a dit…

in the part :How to get it ?

Unknown a dit…

I am trying to customize the category in the xml file but am limited to "solved issues with." I want to create a separate category dropdown, is there a way to do this?

Muad a dit…

Je découvre ce petit soft... ça a l'air d'être une petite perle ! T'aurais pas les fichiers xml en français, par hasard ? Quelque chose me dit que la version originale n'est pas en anglais ! :)

Anonyme a dit…

Nice idea but the code need to be a little bit cleaned.
I'm not a PS specialist but some things triggered me, like this :

$Get_Current_user = (gwmi win32_computersystem).username
$Get_Current_user_Name = $Get_Current_user.Split("\")[1]
$User_Profil_Path = "C:\Users\$Get_Current_user_Name\AppData\Local\Microsoft\OneDrive\OneDrive.exe"

This is way overcomplicated when you can just use $env:USERPROFILE :

$User_Profil_Path = "$env:USERPROFILE\AppData\Local\Microsoft\OneDrive\OneDrive.exe"

Also your way is not totaly correct, because sometimes user profiles are not stored on C drive.

Rick a dit…

Hi there !

You think that's possible to get like an "older" version ?
I mean .. I wanna get the foldering categories and the search button together ! I see that you did remove the categories in the list view.

If you can't I'll work on it, but if the job has already been done :)

Accueil item



Learn KQL in one month

You want to support me ?

Mes articles en français

Books in French