Building PowerShell Applications that Operate on a Planetary Scale by Justin Sider
Channel: PowerShell.org
Date: 2018-05-02

Powershell is quickly taking over the IT world. With the new releases of PowerShell being platform agnostic you can now build Apps that can manage ANYTHING and run ANYWHERE! Combining PowerShell with open source web platforms allows you to build custom Apps to manage heterogeneous infrastructures.
    There is no ‘out of the box’ perfect solution available on the market today that can help you manage your infrastructure your way. It costs too much, it's too complex, there is no way to customize it... we can always find things wrong, or have a better way of doing things... it's human nature. So, I say put your money where your mouth is, and build one yourself! You know your requirements better than anyone else! And, if you know PowerShell you are in luck! Let's continue this journey together.
    I have worked with many tools in the past, and they have never been quite right. I’ve always wanted more information, and extra button, remove some piece of data that I didn't care about, but the problem is that I didn’t understand the language it was written in, or didn’t have access to the source code. So I quit. I quit waiting for someone to do what I needed done, and I started building PowerShell applications to help manage my Information systems.  
    The concept is simple, use powershell to collect data to be stored in a central location, a lightweight web application to display the data, and some business logic to apply relevant changes to the specific environments. The individual components break down into manageable pieces to include; A Queue Manager, Task Manager, Database, Web Application, and a Management service. A Task Manager can be deployed into any environment and is the workhorse of the application. It communicates with the database to input data and to get data to perform the specific workflows you have designed. All log files and related artifacts are securely stored on a CIFS share available for viewing in the User Interface.
With great success, comes more challenges! Having this great distributed system was great when starting, but quickly became a pain to manage! Manually updating scripts on VM’s halfway across the world is not fun, so I wrote a management service to keep all of my systems in sync. Runtime environments needed to be managed as well as source control on the executable files. Insert Docker to resolve the runtime environment, it’s a bit overkill, but does a fantastic job at creating an exact, repeatable workspace to execute scripts. 
What other product will let you build and manage your complex environment of on premise, and cloud infrastructure across product lines like VMware, Active Directory, custom REST API’s, security scanning tools, and more?
  In this talk I plan to break down all of the components that are used to construct a scaleable PowerShell application, as well as describe their roles. I will review some of the problems I have encountered as I have built my custom solution for my environment, as well as lead the audience to a path where they can get started. My hope is to have an engaging audience so we can discuss the importance of the CI/CD pipeline when managing this type of system, as well as the risks of introducing this level of automation into their environment.