The past weeks I’ve been honing my development skills. With the aim of building an interesting application that serves the Microsoft and popular web development stacks. Following the news about UWP (Universal Windows Platform), hybrid operating systems (Bash on Windows) & Visual Code, Microsoft has put a lot of energy in building extensive support for modern technologies. The same can be said for web development frameworks (NodeJS, React, Angular, Express). But unfortunately, the development community has not returned a lot of favours yet.

During my tenure as an IT professional, I desire to explore unconventional topics to discover interesting ways to interact with new services that Microsoft is leveraging . I was surprised to discover that one bridge hasn’t been explored in depth. Which is the appliance of Powershell in web applications. This interest led to the development of a monitoring dashboard.


The concept

The concept is to build a dashboard that is capable of visualizing data, representable for Mirosoft environments. Taking fully advantage of Powershell’s strengths as a system management language. To get going, I started out with the following sketch to delve further into the architecture of the app.


Monify application architectureMonify application architecture


The Powershell Part

A tailored Powershell script is ran in the back at timed intervals through the Set-JobTrigger and Set-ScheduledJob cmdlets. The script retrieves data about the computer's processes, system information, disk usage, etc. We can populate the data set with as much information as we want. Think event logs, logged on users, network interfaces, TCP/IP connections, Office 365 health checks, etc. Anything that Powershell can fetch can be sent to our NodeJS server! The data is exported to JSON on the desired location through the Convertto-JSON cmdlet.


The NodeJS Part

For the NodeJS server part, I based the application around the Express framework to take care of the views, routing and error handling parts. It ensures that the application can be extended with more advanced features as I proceed with its development. The index of the application contains Javascript that sends continuous AJAX (CORS) requests to the Powershell server to update the dashboard’s data. Graph visualization is handled by the ChartJS library.


The dashboardThe dashboard


The goal

Currently the application showcases data dynamically from one server. I look forward to start working on the following functionalities:

  • authentication
  • implementing configuration files to import computers and settings
  • setting up a MongoDB database
  • setting up replication of the database to keep logging volumes under control
  • implementing search functionality
  • enhancing security

I look forward to release the project on Github and would kindly benefit from your comments, remarks, suggestions or anyone willing to contribute from a development perspective. I can always be reached on Twitter to discuss the details of the project.