Wednesday, October 26, 2011

Quit Blocking My Pipeline!

A really cool feature of PowerShell is the async nature of the pipeline, whereby the first command outputs to the next command as soon as it has any results (so BEFORE it is done collecting ALL of its results).

Sometimes because of filtering or selection you only want a subset of the results from the previous command.  In these cases it is nice to not have to wait for that first command to finish, but if that command blocks the pipeline you get to wait for it to complete.

This is one of the annoyances of Export-FimConfig.  Though it is a very useful cmdlet it does block the pipeline.  You can see from my script below that I am only looking for the first item from the output.  I can only get that first item AFTER all the results are returned.

If this is an annoyance for you too then feel free to vote for the feedback on Connect.

A reasonable workaround is to instead write your own cmdlet to replace Export-FimConfig (such as the FIM cmdlets on CodePlex thanks to Quest), but it sure would be nice for this to just work.


Monday, October 24, 2011

FIM Protocol Docs

I seem to mention these things a lot, but never show where to find them.

The first hint was from Joe Schulman (ex-FIM PM)

As a small part of the the announcement about Office 2010 Technical Preview, Microsoft published the Office 2010 protocol documents. A small and dedicated group of us worked hard and long for these past months to release documents related to FIM’s protocols on time. Of particular interest to this audience may be the FIM web service protocol document.

The protocol documents are part of Microsoft’s earnest commitment to interoperability. More information about this program can be found here.

There happen to be quite a few protocol documents for FIM, each document name starts with “User Profile Synchronization (UPS)”.  Why THAT name?  My guess is that these were published because SharePoint took a dependency on FIM when they delivered their component for User Profile Synchronization.  Anyhow, there is the list:

The most interesting protocol document in terms of deployment automation is MS-UPSCDS (Configuration Data Structure) since it details the ma-data and mv-data XML.  Get those right and you can manage the sync engine via the FIM Service, that’s the theory anyway…

Tuesday, October 11, 2011

TEC 2012 in San Diego!

I am a huge fan of Vegas, but am equally excited about TEC in San Diego next year.  While I’m sure there’s great mountain biking in the area, I’m also pretty excited to see what’s in store for the PowerShell Deep Dive around that time when we might get more PowerShell 3.0 sessions.

Thursday, October 06, 2011

Are You Master of Your FIM Domain?

FIM enjoys this strange place somewhere between the skillset of an IT Pro and the skillset of a Developer.

The product used to require great efforts (and maybe some goats) for a successful deployment.  FIM 2010 promised to reduce the effort by adding in declarative provisioning, but the result has to be weighed against the added complexity of the new components in FIM 2010 (workflow, portal, SSPR, and soon SSRS and System Center).

A comment from this blog post indicates what might happen when the weight of a product’s complexity is just too much:

Deep domain knowledge is frequently transferred. It takes a little while, but a team’s existing experts are usually pleased to instruct an outstanding new team member. If they aren’t or an area is far too complex for even sharp people to comprehend, then you’ve got other serious problems.

If you’ve mastered FIM then you are indeed an expert with deep domain knowledge.  For over a decade that expertise has been in high demand.  You could almost relate the complexity of the product to the demand for our expertise.  The comment above is a reminder that there is a limit to just how complex a solution can be before it becomes a problem itself.

The moral of the story is that we need to apply practices such as those in the blog author’s book in order to reduce the complexity of FIM deployments, and also improve the stability of these deployments.