Building a Desired State Configuration (DSC) Lab

Recently I presenting at the Indianapolis PowerShell User Group and talked about Desired State Configuration. The presentation was 100% demonstrations, and I decided it would be a good idea to provide all of the PowerShell commands/instructions I used to build my lab environment for the presentation.

Note: Please note that these instructions were written using multiple Experimental DSC Resources, Microsoft and I myself provide no guarantee that these will work in a production environment. I strongly encourage that you use test environments that do not matter until you feel comfortable with DSC.

Pre-requisites

  • Licensed/Trial Media for Windows Server 2012 R2
  • An installed/updated Sys prepped VM Parent Disk
    • Stored at D:\Templates\Server2012R2.vhdx
  • a Virtual Switch within Hyper-V Configured as a Private, named “Private Network”
  • At least 7GB of free memory
    • You can adjust this all the way down to just 4GB
  • Downloaded copy of the latest DSC Resource Kit – Download Here

Now before we dive into the scripting component of this blog post I want you to know that this is not 100% automated. You will have some manual steps here and there, it is possible to 100% automate – but that will require significantly more effort. Please continue reading for instructions on this demonstration.

Read more »

PowerShell: Check for user accounts running Windows Services

Recently I worked with a client to validate that if a user account were to be disabled that it wasn’t going to break any of their currently running applications. You can be bit by an accidental miss-configuration where an end-users account is running a Windows Service or possibly at a lower level in a specific application such as SQL Server jobs. Luckily with the Power of PowerShell we can conquered the Windows Services! It is also possible to create a SQL Query, or even PowerShell scripts to query SQL, but we will not be covering that in this article.

Checking Windows Services:

The biggest concern I had was the Windows Services, it is easy enough for a junior admin to install SQL and specify their own account as the Service Account. THIS IS BAD! However with some simple PowerShell we can perform a visual inspection, or with some minor adjustments we could look for a service running with a specific user.

In the above example we are using a parenthetical command along with the Get-CimInstance Cmdlet. The command that is executed first is the Get-ADComputer, this will required the ActiveDirectory module is available on your computer system. It uses the filter parameter to look for any computer that is running Windows Server (any version). It then passes those values to the Get-CimInstance which performs an initial WQL Query, which doesn’t allow and statements. Therefore we have to pipe it’s returned values to a where statement which will continue filtering for us. At the very end it provides me the service name, the user account running it, and the computer this service is on.

I was able to run this against the clients environment and within a few minutes we new that it was safe to disable the account.

GriffinMonitor Module v1.5 – Additional Functionality

This evening I’ve decided to add additional functionality to the GriffinMonitor Module. I noticed that I am filling up my storage on my lab server fairly quickly. With that in mind I knew I needed to know once I am about to max it out. I’ve decided to write a fairly simple alert for remaining disk space per volume. Before we dive into how to use the cmdlet and the code itself please reference the previous blog post on Monitoring Storage Pool Health – GriffinMonitor Module.

Using Alert-GMLowDiskSpace:

This cmdlet is very similar to the Alert-GMUnhealthyStoragePool as it has 3 mandatory parameters. There is a 4th parameter that is optional so you can specify the threshold at which it alerts. As I mentioned in the previous blog post at some point I intend to add additional functionality for TLS or SSL secured SMTP servers along with the ability to pass authentication. That functionality is still not there, but it is still on my to-do list.

Example:

-OR-

 The Module Code:

 Update Instructions:

  1. Open C:\Users\<username>\Documents\WindowsPowerShell\Modules\GriffinMonitor with the PowerShell ISE or your favorite text editing document
  2. Replace the code with the above script
  3. Create a Scheduled Job for the new PowerShell cmdlet

Installation Instructions:

  1. Navigate to C:\Users\<username>\Documents\WindowsPowerShell\Modules\GriffinMonitor
    1. (Note: If the directory doesn’t exists you must create it.)
  2. Save the above code in a file named GriffinMonitor.psm1 under the above directory
  3. Create a Scheduled Job using PowerShell

Once it is scheduled, keep an active eye on your inbox for when your Storage Pool goes unhealthy!

Miscellaneous Notes:

  • This module was built and tested using PowerShell v4 on Server 2012 R2 running a single Storage Pool.
  • This module “should” work with Server 2012 running PowerShell v3 with one or many Storage Pools
  • This module comes with no guarantee or support, this is a run at your own risk and I take no responsibility for any repercussions that may occur by running this.
    • With that being said I’ll try my best to assist anyone who may have questions if you post in the comments of this thread.

The ever Evolving Career of IT – Reflecting on the last Decade

I’ve been working professionally in IT for 6 years, and I have been working with computers for over 10. I quickly realized that if I continued down this path for my life, I would be in a constant learning curve. This was something that interested me as I always enjoy learning new things and playing with new technologies.

My initial interest was in web development up until I reached college. I took two part time jobs, one doing web development, another doing help desk support. Initially I was very excited to do the development job, I started digging in, expanding my knowledge and trying to advance all of my skills. I quickly realized that I enjoyed the help desk support much more. My favorite part of help desk support was that I was able to help people every day. I would leave a faculty members office and they would be very satisfied that they received assistance. I had no previous customer service experience, but was exhilarated with the interactions I had on a daily basis.

As the years progressed I continued down the IT Pro path, and started moving into server administration prior to graduating college. I had loved the customer service, but I felt there was a greater good I could provide by managing the back end systems. I wouldn’t get as much recognition as I had previously, but I would have many more challenges and still be helping.

I started at Apparatus 1 year prior to graduating college and I have just wrapped up my 3rd year here recently. In those 3 years I have gone from part time employee, to full time entry level management. In the last 6 months I’ve done a lot of reflecting on where I want my career to go. I’ve been saying that I had no idea I would be where I am last year, lets see where this year will take me.

I currently am in an internal battle with myself on if I’d like to pursue my IT career further or if I’d like to jump over to management; while trying to keep my IT skills as fresh as possible. I still have yet to make a decision, and I am considering my options on a daily basis. I do love the management by getting to help co-workers develop their skills and become greater at their job. I like to help them pursue their dreams while working in IT and I love getting hands on dirty with the work.

As of today I am Matt Griffin, Technical Team Lead at Apparatus. Tomorrow… who knows what I will be.

Building The New Battle Station

For the last 5 years, I’ve owned the same desktop computer that I do most of my work from at home. The computer was solid, a Dell XPS 630i. It still was performing like a champ with an occasional blue screen, I believed caused by the SLI video cards. I don’t have much time for video games so I figured there was no point in replacing it for the longest time.

WP_20140526_002

Before monitor replacement

After two random blue screens in the same evening I decided it was time to bite the bullet and replace the system. I had no interest in spending hours troubleshooting the issues when I knew I wanted a new computer anyway. Now was the time to decide if I was going to purchase a new system or build my own. I did quite a bit of research and I wanted to buy a fairly solid gaming rig that will last me at least another 5 years. Looking at the options out there and comparing the cost associated I decided to build my own machine.

Read more »