We all use a minimum of one operating system language on our computers.  It may be likely that a company that has many employees may end up with several nationalities. This means, more multilingual user interface (MUI) pack is required in your operating system deployment. When a MUI Pack is installed, the user interface language can be change to one of 33 supported languages.

In this post, we will extend hardware inventory in SCCM 2012 to inventory multilingual user interface pack information.

Here’s the steps in order to achieve this goal :

  • Custom WMI Class
  • Package Creation
  • Package Deployment
  • Hardware Inventory
  • Verification


Download Multilingual User Interface Pack kit for hardware inventory in SCCM 2012 from TechNet Gallery.

  • Unzip the file
  • Copy ps1 in your package source directory
  • Copy Operating System Multilingual User Interface Pack.zip where you can reach using UNC path

Let’s get started!

Custom WMI Class

MUI languages information is in WMI class Win32_OperatingSystem. We will create a new custom WMI Win32_OperatingSystemMUILanguages class by using a PowerShell script.

  • Open a command prompt or PowerShell with higher privilege (run as administrator)
  • Navigate to the place you copy the PowerShell script in the pre-requisites section
  • Execute this command : PowerShell.exe –executionpolicy bypass –file Win32_OperatingSystemMUILanguages.ps1

MUI Languages Inventory

You should see something like that in your WMI repository.

MUI Languages Inventory

Now that we have test the PowerShell script on one computer, let’s scale to all devices in your environment.

Package Creation

We will create a package to successfully run the PowerShell script on multiple machines.

  • Open the SCCM console
  • Navigate to Software Library / Application Management / Packages
  • Click on Import button in the upper ribbon

MUI Languages Inventory

  • From Import Package Wizard in General windows, select the UNC path where you copy the package ZIP file and click Next

MUI Languages Inventory

  • In File Content, click Next

MUI Languages Inventory

  • Click Close

The package will be created in the package root folder. Move the package to your package source folder.

  • Right click on the package and click Properties

MUI Languages Inventory

  • Select Data Source tab
  • Check the box The package contains source files and select your source path of PowerShell script
  • Click Ok

Package Deployment

You’ve finish to import the package. The goal is to run the script silently and repeatedly to ensure that the data is updated after any change to the user. We don’t want the user to be aware each time it is running.

  • Right click on the package and select Deploy

MUI Languages Inventory

  • In Content, select the collection you want to execute the PowerShell script and click Next

MUI Languages Inventory

  • Add the distribution points or distribution point groups needed for the deployment and click Next

MUI Languages Inventory

  • Make sure the purpose is Required, then click Next

MUI Languages Inventory

  • Click on New assignment schedule and select As soon as possible
  • Configure the rerun behavior to Always rerun program and click Summary
  • Revised the deployment details and click Next
  • Click Close

As soon as the machines will run the script, the custom WMI class Win32_OperatingSystemMUILanguages will begin to populate.

Hardware Inventory

We are now ready to configure SCCM to collect this information on all the machines. We will use the mechanism of hardware inventory in client settings. In our example, we will use the default client settings but you can easily refine the scope by creating a custom client settings based on the same collection you configure to deploy the package.

  • Navigate in your SCCM console to Administration / Client Settings
  • Right click on the Default Client Settings and click Properties
  • Click on Hardware Inventory on the left side then click on Set Classes

MUI Languages Inventory

  • In Hardware Inventory Classes properties windows, click on Add

MUI Languages Inventory

  • Click on Connect and enter a computer name where the custom WMI class was created
  • Make sure Recursive box is checked and click Connect

MUI Languages Inventory

  • Search and select Win32_OperatingSystemMUILanguages
  • Click Ok
  • From the Hardware Inventory Classes windows properties, you should see this

MUI Languages Inventory

  • You can close the windows by clicking on Ok and again Ok on the client settings properties

Devices will receive new hardware inventory modification at the next machine policy. As soon as the next hardware inventory scan will be executed on the devices, the MUILanguages data will be added in SCCM SQL database.



On the client device to confirm that the hardware inventory scan pick up MUILanguages, you can take a look to InventoryAgent.log in c:\windows\ccm\logs.


Verify the SQL database if it’s getting populated by using SQL Server Management Studio and doing the below query.

[pastacode lang=”sql” message=”” highlight=”” provider=”manual” manual=”SELECT%20*%20FROM%20V_GS_OPERATING_SYSTEM_MUI_LANGUAGES”/]

MUI Languages Inventory


MUI Languages Inventory

Comments (3)


01.25.2018 AT 01:43 AM
Why would we need a custom WMI class at all, since the Win32_OperatingSystem class already contains MUILanguages as an attribute?


07.07.2017 AT 06:34 PM
How do you get the currently used language as a part of this?


11.21.2016 AT 09:00 AM
I have followed the above instructions but the SQL database is not populating and the inventory log is not picking up the new Hardware request. i have let it "cook" for 7 days but still no data. any suggestions?