Author Archives: skeiffer

Configuration Manager Web Frontend Update 2.0

I am currently undergoing a career change which will take me out of the ConfigMgr realm for some time. But before I do that I wanted to bring the public version of CMFrontend up to what I have done internally so that everyone can hopefully take use of whats is new in the tool as there are some pretty big additions.

Change log

  • New users tab that allows you view and get quick access to all the computers that a username uses.
  • New OSD API has been included to help facilitate the creation of Pre-Execution applications / scripts. Please see the API documentation for more details.
  • New C# launcher application & protocol that is browser agnostic. (Deployment required, see instructions in readme)
  • Remote Control has been added to the Tools list.
  • CMFrontend will now cleanup old and unused collections that are no longer needed.
  • Page load is now much faster as the task log is now limited to the last 25 entries.
  • Small style tweaks and bug fixes.

For more information on these new items look further down on this post.



To upgrade an existing isntallation run update.ps1 in an elevated powershell session on the server hosting CMFrontend.

The new features

User lookup

A common problem we have had in the past: Student worker needs to deploy an application to a user’s machine but all they know is the username. This generally resulted in a lengthy process of looking up the records in a CMDB, giving up and asking higher level IT staff, or asking the user themselves for the asset information.  All of these scenarios add unneeded time to a resolution.

To solve this, we added a tab where our workers can search for a username and then be given a list of computers they can click on and then perform any action that is already available from with CMFrontend.



This is probably the most requested feature I have received over the past few years. I finally bit the bullet so I could better incorporate the authorization of who could perform OS Deployments with CMFrontend and finally remove the ADSI hack from our boot images. What is included is pretty bare bones but it should be enough for most scenarios. I have included the classes used in the API to help speed up development for anyone wanting to leverage this feature. Here is an example of what we made internally that leverages this API.


Helpdesk Launcher

The tools page has been broken for years now due to java’s security hardening. With it being broken and our ever increasing desire to destroy all things java I finally decided to write write the launcher in C# using a custom protocol.


While this method does require deployment to all systems using CMFrontend it has worked extremely well. I have included a ConfigMgr export for convenience as well as the source code for transparency.

Collection Cleanup

Over the past 4 years of using this solution internally we have deployed 8000+ applications from CMFrontend which has resulted in hundreds of unused collections and deployments, most of which don’t do anything as the application that was being deployed is long gone. With this update all of that will be cleaned up even if you have been using CMFrontend from the beginning.



Configuration Manager Web Frontend Update 1.0.4

This update addresses a few bugs that people have encountered since the last update. If you already have the frontend installed download the update for your version of ConfigMgr. Updated full versions are also available below.

Change log

  • ConfigMgr 2012 and 2012 r2 supported under same installation.
  • Initial inventory scan for sites with a large number of clients now works.
  • Added database prefix option for sccm installations that use SMS_<sitecode> or something else rather than the default CM_<sitecode>.
  • Added a debug logging option.



To perform this update run update.ps1 in an elevated Powershell session.

Configuration Manager Web Frontend Update 1.0.3

I have been meaning to post this update for a while now. This is a small update that mainly addresses installer script issues and 2012 R2 support. If you already have the frontend installed download the update for your version of ConfigMgr. Updated full versions are also available below.

Change log

  • ConfigMgr 2012 R2 support
  • Fixed installer bugs
  • Added application filters to the site
  • A few style changes



To perform this update run update.ps1 in an elevated Powershell session.

Configuration Manager Web Frontend

Update (09/15/2016): Version 2.0 has been released! Please check this post for details: Configuration Manager Web Frontend Update 2.0

Back in SCCM 2007 and SMS 2003 there was a popular community tool by Ron Crumbaker called web remote tools that would allow help desk staff to easily deploy software and access tools for a computer without having access to the console. With the new appmodel and other changes in SCCM 2012 these tools no longer work. Since Ron’s project has been stale for very long time I decided to create a modern replacement.

Configuration Manager Web Frontend (CMFrontend) is a HTML5 web application designed to provide quick access to information, tools, and deployments without the use of the Configuration Manager console.

CMFront_1 CMFront_2


  • Deploy both Applications and Packages
  • Quick computer information
  • Find all system that a user uses
  • Remote tools
  • Role based administration support
  • Realtime deployment status

Download & installation

CMFrontend can be downloaded here:

The installation is mostly automated but there are a few prerequisites that must be in place. Check the readme inside the zip file for more details.

Note: CMFrontend requires a new server 2012 VM to be setup.

How it works

CMFrontend uses a windows service and an mvc4 website to connect to the ConfigMgr management point and sql server in order to perform its actions. Most data is cached via an SQL database so that the service does not create excessive load on the management point.

Application deployments are performed by a specified service account that automatically creates a collection and a deployment for each program deployed per RBAC group.


The tools are launched from the browser using a custom protocol. I have included the source code for this launcher for any security concerns / repackaging & resigning.

Computer Warranty Info (Formerly Dell Warranty Info)

Update 08/25/16: Both Dell and Lenovo functions have been updated and are currently working. API key in the Dell function may expire overtime and will need to be replaced.

Update 07/28/16: Looks like Dell has replaced their older warranty lookup service with a new API. I am currently in the process of re-writing the script and hope to have it online soon.

Update 02/25/16: Lenovo changed the way their warranty lookup pages works a few months ago. The script has been updated so that it works with those new pages.

Update 08/05/14: File is actually updated this time and now contains the fixes mentioned in previous update.

Update 07/25/14: Fixed Get-DellWarrantyInfo, It appears as if Dell changed the WSDL to point to an internal address. A workaround has been added. Redownload the script to get the correction.

Update 05/23/14: All lenovo warranty issues have been fixed (for now). Redownload the script if you have lenovo systems.

This package provides easy, scriptable access to Dell and Lenovo warranty information and includes an example on how it can be used to power ConfigMgr 2012 reports.

Back in 2011 I created a dell warranty powershell module that would use Dell’s web service to gather warranty info. Using that module I created two scripts that could be used with ConfigMgr to gather warranty data for reporting. Now that most people are using ConfigMgr 2012 I have had many requests to update them as they currently do not work.

In this new version a few things have changed.

  • Lenovo support has been added. (Get-LenovoWarranty)
    • This is an html scraper and might break in the future.
    • Lenovo’s web servers are very sketchy.
  • ConfigMgr 2012 support.
  • The SQL script has been improved.
    • Data is now stored in its own database.
    • The script will only query for warranty info that is missing.
  • The WMI hardware inventory script has been removed.

You can download the new scripts here:


This powershell module contains two functions that will allow you to gather warranty info from both Dell and Lenovo systems. The required info to look up the warranty information can be automatically gathered from the computer itself, or directly inputted. This module does not require ConfigMgr. Feel free to use this module in your own scripts if you desire.

get-DellWarranty [[-computer] <String>] [[-logFilePath] <String>] [-ServiceTagInput]

Example 1 – Get dell warranty information using a computer name

Get-DellWarranty MyComputerName

Example 2 – Get dell warranty information using a list of service tags

Get-Content .\servicetags.txt | Get-DellWarranty -ServiceTagInput

get-LenovoWarranty [[-computer] <String>] [[-logFilePath] <String>] [-TypeSerialInput]

Example 1 – Get Lenovo warranty information using a computer name

Get-LenovoWarranty MyComputerName

Example 2 – Get Lenovo Warranty information using a list of system types and serials.

Get-Content .\TypesAndSerials.txt | Get-LenovoWarranty -TypeSerialInput


This script will query the ConfigMgr database for Dell and Lenovo systems and store their warranty information in its own database using the Computer Warranty Info module. On subsequent runs only the systems that are still missing warranty info will be run. This script should be run on a regular schedule for best effect. This script has not been tested with ConfigMgr 2007.


  1. Run the following powershell using a user who has read permissions on the ConfigMgr database and the ability to create databases on the server itself.
    .\ComputerWarrantyInfoSQL.ps1 -SqlServer -SiteCode ABC
  2. Set this command to run on a schedule if you wish.

The Report

As we all know creating reports in ConfigMgr 2012 takes much more effort than it did in 2007. I have included an export of a very basic report for you to use as a starting point. I recommend changing it to suit your needs as it is very basic and mainly for example.


  1. Add your report viewer service account with read access to the database created by the sql script (ComputerWarranty).
    create user 'yourreportvieweraccount' for login 'yourreportvieweraccount'
    exec sp_addrolemember 'db_datareader', 'yourreportvieweraccount'
  2. Open Computer Warranty Info.rdl with report builder (use a user that has access to the ConfigMgr database)
  3. On the left, right click on data sources and hit add data source…
  4. In the Data source properties window, hit browse.
  5. Navigate the your report server’s configmgr_sitecode.
    1. Should look something like this: http://sqlserver/reportserver/ConfigMgr_sitecode
  6. Double click on the data source in the folder. It will have a unique guid as the name.
  7. Ok out of the dialog.
  8. Right click on dataset1 and goto properties.
  9. Make sure that Datasource1 is the selected data source.
  10. Do the same for dataset2.
  11. Go ahead and run the report. If you have no errors save the report to your report server.