PowerShell has been the topic for Windows systems administrators and engineers to learn ever since the release of Exchange Server 2007, the first major product to utilize PowerShell. Many IT professionals are still behind the curve on adopting PowerShell and I highly recommend getting on the ball and becoming not just familiar, but intimate, with PowerShell. Desired State Configuration (DSC) is the next thing to learn.
DSC is a highly flexible and capable platform that utilizes WMI and OMI (Open Management Interface) to implement and maintain configurations. It functions by delivering MOF files to a set of systems that are used to distribute the desire state of configuration. These files can be built using any ASCII text editor and distributed to systems via a push or pull mechanism (pull being the preferable situation but requires a modest infrastructure to support it, either an SMB file share or a webserver with JSON/REST capabilities). As of PowerShell v4, but more capable as of PowerShell v5, DSC is built into PowerShell, making it very easy to implement the infrastructure and build the configurations. Modules are available for many platforms, including Exchange 2013 (the xExchange module), SQL Server, various components of Windows Server, and even modules for Linux and more. One of the great new features afforded to DSC with PowerShell v5 is PowerShell OneGet which is very similar to features within Unix-type package managers, like apt-get, that allow modules to be downloaded and installed.
More can be learned about DSC from the Microsoft Virtual Academy.
DSC is a great tool for IT professionals to learn, as a whole, but I am particularly interested in it relative to Exchange Server. When heavily into Exchange Server 2010 implementations, I made fairly significant headway into scripting and simplifying its installation and configuration. This assists greatly in many aspects, including documentation, consistency, and reduction in human error. However, I always thought that it was just short of something more it could become. The xExchange module for DSC is that next step. In addition, DSC has modules for web server configuration which are also very handy for Exchange. One particular gripe that I have had on behalf of customers has been that various customized aspects of an implementation get overwritten when applying updates. Of particular note, for OWA integration with presence in Lync/S4B, the web.config must be edited to provide details necessary to make this happen. These details can now be configured through DSC and with its ability to manage and correct configuration drift, it automatically changes the desired settings back to what you wish them to be after applying updates.
More can be learned about the xExchange module for DSC from Microsoft Ignite.
There is a word of caution, however. Implementing DSC with a refresh cycle to manage configuration drift will cause frustration for those that don’t realize what is happening. When a newcomer to the environment makes an intended change to the infrastructure, it will be reverted if managed by DSC. So, as always with change control and service minded organizations, document and share knowledge relative to these circumstances.