SelfX new version, a tool allowing users to solve their issues themselves

3 A+ A-

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

The solution

When a user has an issue the process to solve it is often the same:

1. User contacts support team or opens a ticket

2. Someone from help desk contacts the user

3. Help desk may remotely connect to the device

4. Solve the issue manually or using PowerShell

A lot of issues can be solved without admin rights and as you may know, you can automate a lot of things.

For instance let's take some examples:

- User has sync issue with OneDrive

- Status on Teams is not correct

- Teams meeting button is missing in Outlook

- Teams is freezing on audio conversation

- Teams camera is frozen/invisible

- Device is running slow

- Issues with VPN

All those issues can be solved with PowerShell without admin rights.

The goal of the tool is not to provide a list of issues and scripts to solve your issues.

I provide a list of issues and scripts but the goal of the tool is to let you adding:

- Issues list for users depending of your context

- Scripts to solve those issues

The tool is totally dynamic meaning you don't need to edit PS1 or XAML.

Adding your own issues with scripts can be achieved in just two steps:

- Add issues explanation in XML file

- Copy PS1 to solve it in a folder

In the downloaded Sources folder you will find:

- Folder Scripts_to_run: contains your scripts

- Issues_List.xml: contains list of issues

- Tool_Config.xml: change design, language...

Everything in the tool can be managed through the Issues_List XML:

- List of issues

- Label of each issue

- Scripts to run

- Warning displayed into the details button

- Text displayed into the Run action button

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...

You will see more informations about the process later in the post.

The user GUI

The GUI looks like as below:

It is composed as below:

1. Title and subtitle explaining what does the tool

2. A legend explaining what buttons do

3. List of issues by categories (OneDrive, Teams...)

4. A search bar to type key word

5. Each line corresponds to an issue 

7. On each line there are two buttons:

- Run an action to solve the issue (script in background)

- Show an explanation about the issue

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

If user clicks on the second button, it gives more details about the issue:

See below a picture resuming this:

Process in action

I am a user and I have an issue with Teams.

Indeed when I try to send a message on Teams I have a warning "Failed to send".

How do i resolve this easily ?

1. Open SelfX desktop shortcut

2. In the search bar I type Failed


2. In the dropdown menu, I choose Teams

3. I choose the appropriate issue

4. I click on Details to get more info

5. I click on the blue button to solve the issue

6. It informs me of the action

7. I click on OK

8. Teams is closed automatically

9. I wait a bit

10. Teams appears again

11. Now I can send messages again :-)

Advantages of the tool

Totally free

The tool is totally free you can use it and customize it as you want. 

Easy to customize

You can customize whatever you want in the tool:

- List of issues

- All text in the tool

- Color of the tool

- Icon

You don't need to change the PS1 because everything can be done by editing an XML file.

Easy to install

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

We will see the install process later in the post.

Easy to update/manage

All issues are displayed through an XML file.

This way, you can really easily add a new issue in the tool by adding a new line in the XML and copy a script in a folder.

!! I don't provide a tool with scripts to solve issue !!


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

You can change all text using the XML file meaning you can translate it easily to your own language.

We will see this in the part later in the post.

Reduce support tickets/calls number

The idea of the tool is to allow users to solve their issues themselves without calling support team.

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

Issues list location

All issues are located in an XML file.

This XML is by default located locally.

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

We will see this in the part later in the post.

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.

He can, also choose a category of functionnalities on which his issue occurs like Teams, OneDrive, device...

A search bar also allows him to type a key word like synchronisation...

How to get the tool ?

Click on the below GitHub picture to download the tool

How does it work ?

1. To install it run Install_tool.ps1

2. A SelfX folder is created in %localappdata%

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

4. Shortcut will be available on desktop and start menu

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

6. The GUI will load content from XML

How to add 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

The goal of the tool is that you manage issues to add.

Adding a new action/issue 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 main list

- Buttons: Text of the buttons in run action warning

- 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

See below en explanation about configuring the Run action warning:

For instance see below an overview of a node from the Issues_List.xml
This one is located in the category Device.

See below a picture explaining correspondance between nodes and how it's displayed in the GUI.

See below an overview of the Run action button versus what is in the XML for this action.

For instance, 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 next step is to copy your script in the Scripts_to_run folder.

When you run again the shortcut, you will see the new action.

Let's take another example:

You want to add a new category called VPN and a script to solve VPN issues.

We will add a new category called VPN and add it in the XML.

Now users open the tool they will see a new category with the issue.

Issues list location

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. Increase version if you added changes

4. Add your issues

5. Copy script in Scripts_to_run folder

You need to add your issues before installing the tool.

From the web

In this case proceed as below:

1. Edit the Issues_List.xml file

2. Go to XML_Version

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

4. Add your issues

5. Copy  scripts in Scripts_to_run folder

6. ZIP content of Scripts_to_run folder

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

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 to install it ?

As mentioned before there are two installation methods:

- Locally

- From the web (for issues list)


For the local method we will proceed as below:

1. Add your issues in the XML (as mentioned above)

2. Run Install_tool.ps1 without admin rights

From the web

To use issues list from the web, we will add two parameters to Install_tool.ps1

The idea is to use both content from the web like on a blob storage:

- Issues_List.xml

- Scripts_to_run folder

We will add below parameters:

- XML_Link: path of Issues_List.xml

- ZIP_Link: path of Scripts_to_run.zip

We will proceed as below:

1. Add your issues as mentioned previously

2. Run Install_tool.ps1 with parameters

3. A new XML called List_Config that stored paths


Now every time user opens the SelfX shortcut it will check compare XML_Version from the Issues_List.xml located locally and this one on the web.

If version is greater on the web it will automatically copy new XML locally an download the Scripts_to_run.zip.

When a new version is detected after opening the tool you will see a progress bar:

To check the XML version used in the tool, go to the ? button in the title bar.

This will display the tool version and the XML version.

The XML version is the version found locally.

Implementing with Intune

Creating the package

1. Update Issues_List.xml with your issues

2. Download the tool here

3. Run the tool

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. In Install command type this:

12. In Uninstall command type 

13. Click on OK

14. Type your requirements

15. 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

Assigning the app

1. Go to Assignments

2. Click on Add group

3. Assign as you want

Modifying main tool

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 Tool_Config.xml

2. 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.

Changing tool color

You can easily customize the color of the tool.

By default the color is Cyan.

To change it, proceed as below:

1. Edit the Tool_Config.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 Tool_Config.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 Tool_Config.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 Tool_Config.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

Updating the issues list
As mentioned you can really easily add your own issues to the list by just editing the XML and adding script in the folder.
If you have installed the tool on users devices and want to update the issues list it's easy.

XML from the web
In this case you have nothing to do because each time the user will open the tool it will automatically if there is a new version where you put the XML.
The only thing to do is:
1. Add your issues in Issues_List.xml
2. Copy scripts in folder Scripts_to_run
3. Open file Issues_List.xml
4. Go to the node XML_Version
5. Increase the version number
6. Upload both XML on your blob or other
7. ZIP folder Scripts_to_run
8. Upload it on your blob or other

Then when user run the tool, it will compare current version with latest available using node XML_Version.

Local XML
In this case proceed as below:
1. Create a folder like Update
2. Copy the current Issues_List.xml
3. Add your new issues 
4. Create a sub folder Scripts_to_run
5. Copy scripts in folder Scripts_to_run

Now the goal is to copy folder content of folder Update in %localappdata%\SelfX

Now there are differents ways for that:
- By using Win32 package
- By using PowerShell scripts
- By using Proactive Remediation
slider 6384025183614033989

Enregistrer un commentaire

3 commentaires

Daniel a dit…

Im trying to run your Selfx Version, having modified only appearance. My Problem is, when i put the Issue_List and the Script Folder on a Weblink...the Tool is hang itself everytime i start it after installation.

So the first time he does it correctly and download it from the weblink. But as soon i start Selfx it comes with : "Trying to Update XML File" and this endlessly. The funny part is when i close this window i can use the tool normally with all functions. How can i get rid of the "loading screen" ? Do i miss something ?

Daniel a dit…

me again :)
i Found out that it is hanging here :
Function Close_modal_progress{
$PsChildCmd.EndInvoke($Script:Childproc) | Out-Null

It cannot close the windows but i dont know why, thats why it works when i close it manually...

Neo a dit…

Génial !

Cependant, lorsque je traduis en français, tous les caractères de type : "é" ou "è" ne s'affichent pas correctement.
Une idée ? :)

Accueil item



Learn KQL in one month

You want to support me ?

Mes articles en français

Books in French