Author: Chris Summers

PowerShell Mistake: Expecting By Value And Getting By Reference

The script I wrote to parse the client health log files had a bug in it where if a computer reported multiple status codes the output would only include the last status code. This is because I was adding the values to the array by reference, changing the object, and adding it again by reference. Since both indexes of the array were referencing the same object in memory I was ending up with only th...

Parse Dan Thomson’s Client Health Check Log Files

I put together a quick script that reads all of the client health logs from Dan Thomson’s health script script and outputs a CSV file. The results are stored into objects and the objects stored into an array so it wouldn’t be too difficult to modify this to output to whatever desired format you have. Enjoy!   The script can be found here.

PowerShell Function: Insert-TotalRow

When building reports with PowerShell I usually build a HTML page with a  StringBuilder and add multiple tables using the ConvertTo-HTML cmdlet. This function inserts a total row to output of ConvertTo-HTML cmdlet so I don’t have to handle it separately. Function: 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 function Insert-TotalRow {     # Adds a total...

NAP Knowledge Dump

Shortly after I started my “series” of NAP related posts I was assigned back to ConfigMgr and had some personal life problems that got me disinterested in finishing the posts. Instead of spending a bunch of time finishing the series, I’m going to dump some of the useful things I worked on here in case some of it can be helpful to someone else. Warning: These are all examples of how I did something...

NPS/NAP Reporting – Architecture

This is part 2 of my NAP Reporting series. At this phase in my NAP project we are in a DHCP reporting mode. This is the easiest way to get your feet wet with NAP, you install NPS on your DHCP servers, and create NAP policies that allow all health levels access to the network. In order to define my security policies at 1 location, I’ve got all DHCP servers configured as RADIUS clients to a ce...

NPS/NAP Reporting – Introduction

I’ve spent a lot of time this year working on a MS NAP implementation. I’m nowhere near complete with this project but I would like to share what I’ve got so far in reference to reporting. The best article I could find on NAP reporting is a guest post on the Microsoft NAP blog by Alex Chalmers from Ball State University. I’m sure it works fine but it’s much more compl...

Importing Drivers Fails in ConfigMgr 2007

This is probably a rare issue but I’m going to blog about it since I didn’t quickly find anything on the web about this. Today I ran into an issue where our OSD guy could no longer import drivers. Every time he would try to import drivers he would get the message “An error occurred while importing the selected driver.” Cause He created a new driver package the used the same...

Small Bug in Windows Server OS MP

As usual, Kevin Holman has a great post on the 6.0.6957.0 MP. There are issues with it so read the blog and comments. Anyway… There’s a small text error in the alert details of the Available Megabytes of Memory is too low alert. There are a few rogue percent characters thrown in there to make it appear as though the threshold is a percentage. It’s not. I cracked open the data source just to be sur...

Compare Management Packs Across Management Groups

The following query will give you the version of each management pack on multiple management groups. Replace MG1 and MG2 with your management group names. This is only useful if you have multiple management groups reporting to the same data warehouse. With MPs(MG, MP, Version) AS ( SELECT vManagementGroup.ManagementGroupDefaultName, vManagementPack.ManagementPackDefaultName, vManagementPackVersion...

Use a Query String To Populate the Computer in Ron Crumbaker’s Web Remote Tools

These changes will allow you to link to the Web Remote Tools and automatically populate the computer input box using a query string. For example: http://configmgr/tools/default.asp?sMachine=computer1 Open Default.asp and make this change: Line 21: <frame name="contents" scrolling="no" target="Nav" "resizable=yes,scrollbars=yes" src="MachRest.asp?sMac...