Saturday, November 19, 2011

Windows Live Writer …

This post is almost completely for me.  I decided that I would try the Microsoft Live Writer tool, because I needed to get out and do some writing.

The interface for Live Writer is actually very clean and simple.  It seems as if I can focus on the words and use common Office Ribbons and concepts for building out this page.

So, I did a quick publish of the page and I must admit, it looks like it plugs right in with the previous posts I already have out on the site without anything that would indicate that it’s now being written by something other than their native tool…

Either way, I’m re-publishing and I think I’ll be calling it a night soon.

Wednesday, April 27, 2011

Windows XP to Windows 7 : Let's talk applications

The difficulties of rolling out any operating system (Windows, Linux, Macintosh) lies in building out the list of applications that are installed in your environment.  To do this, you have to first figure out how large the scope is that you have to work with.  Now keep in mind, I'm an SCCM guy and believe that the ACT utility is ok, but not the greatest way to determine what people have installed.

The realities:

The first thing I did was run a quick query to determine the scope of the application installs that exist in the environment.  I use the v_GS_Add_Remove_Programs, v_R_System to find all of the machines that are still Windows XP.  This query gives us a quick count of each application installed across the environment.

SELECT      ARP.[DisplayName0] AS [Application]
            , Count(SYS.[Name0]) AS [Computers]
 FROM       v_GS_Add_Remove_Programs AS ARP
 JOIN       v_R_System AS SYS
  ON        SYS.[ResourceID]=ARP.[ResourceID]
 WHERE      ([Operating_System_Name_And0]='Microsoft Windows NT Workstation 5.1'
   OR       [Operating_System_Name_And0]='Microsoft Windows NT Workstation 5.2')
 GROUP BY   ARP.[DisplayName0]


This query simply provides a list of applications and how many times they are installed.  Once this is done, I export this list to Excel for groups of people to be able to work with [side note: in the future my goal is to use Sharepoint lists for this work].  On this list are many Microsoft Updates, I quickly filter those out to bring the list down to a more manageable list of software.


For this particular client, part of the application work was done ahead of time and most applications had been pre-tested, but some pieces of the data was missing.  For example, the client used a bunch of ambiguous names for applications (especially those designed in-house) and didn't have any thing matching the name as installed in Add / Remove Programs.  


We added a table to SCCM to allow us to track applications that we are certain have issues.  We got agreement from management to move forward to Windows 7 if we can't show that the machine has applications that aren't ready.  Our table (BrokenWindows7Apps) contains minimal fields (AppName, ARPDisplay, ExeName, ExeVersion) to perform simple queries against.  OUR GOAL IS TO KEEP THINGS SIMPLE.

After this, we hunted down application owners (we had a pretty good list) and built a front end to the data to gather this information and use it for performing checks for broken applications.  With this data in hand, I built several queries against this table that allow us to determine, in a True / False fashion, for each machine in the company, if Windows 7 will install properly based on the application set.  This is useful information even if you are replacing the machine.  Remember, you still have to perform some sort of assessment on the old machine that you are replacing.

...  Have I ever mentioned how much I love the willingness of the programmers to help when the Infrastructure teams come along asking for information :) ...

And now, a litany of bad applications later, we had information for at least the ones that we believed were the biggest hitters for what we knew about.  We now have the important pieces of information in front of us including a list of all machines that are still Windows XP, a list of known bad applications that includes the data for Add / Remove Programs Display Name and Executable information.  It's time to put it all to good use.

So, here is our last query for the night (this will give you a list of all computers and if they qualify for Windows 7 based on their application set).  This query gets very, very complicated (and yes, I love playing in SQL).

SELECT  SYS.[Name0] AS [Computer]
  , SYS.[Operating_System_Name_And0] AS [OS]
  , SYS.[AD_Site_Name0] AS [AD Site]
  , SYS.[User_Name0] AS [User]
  , HW.[Model0] AS [Model]
  , [Windows 7 Ready] =
   CASE
    WHEN [Windows 7 Ready] IS NULL THEN 'True'
    WHEN [Windows 7 Ready] = 'False' THEN 'False'
   END
FROM v_R_System as SYS

LEFT JOIN (
SELECT SYS.[Name0] AS [Computer]
  , SYS.[Operating_System_Name_And0] AS [OS]
  , SYS.[AD_Site_Name0] AS [AD Site]
  , SYS.[User_Name0] AS [User]
  , HW.[Model0] AS [Model]
  , [Windows 7 Ready] = 'False'
FROM v_GS_Add_Remove_Programs AS ARP
JOIN(
 SELECT  [Name0], [ResourceID], [Operating_System_Name_And0], [AD_Site_Name0], [User_Name0]
 FROM v_R_System
 WHERE [Operating_System_Name_And0] = 'Microsoft Windows NT Workstation 5.1' or [Operating_System_Name_And0] = 'Microsoft Windows NT Workstation 5.2'
) AS SYS
ON ARP.ResourceID=SYS.ResourceID

JOIN v_GS_Computer_System AS HW
ON  SYS.ResourceID=HW.ResourceID

WHERE
 ARP.[DisplayName0] IN (SELECT DISTINCT DisplayName FROM BrokenWindows7Apps)

GROUP BY
 SYS.[Name0]
 , SYS.[Operating_System_Name_And0]
 , SYS.[AD_Site_Name0]
 , SYS.[User_Name0]
 , HW.[Model0]
UNION

SELECT SYS.[Name0] AS [Computer]
  , SYS.[Operating_System_Name_And0] AS [OS]
  , SYS.[AD_Site_Name0] AS [AD Site]
  , SYS.[User_Name0] AS [User]
  , HW.[Model0] AS [Model]
  , [Windows 7 Ready] = 'False'
FROM v_GS_SoftwareFile as SF

JOIN(
 SELECT  [Name0], [ResourceID], [Operating_System_Name_And0], [AD_Site_Name0], [User_Name0]
 FROM v_R_System
 WHERE [Operating_System_Name_And0] = 'Microsoft Windows NT Workstation 5.1' or [Operating_System_Name_And0] = 'Microsoft Windows NT Workstation 5.2'
) AS SYS
ON SF.ResourceID=SYS.ResourceID

JOIN v_GS_Computer_System AS HW
ON  SYS.ResourceID=HW.ResourceID

WHERE
 sf.[FileName] IN (SELECT DISTINCT [Executable] FROM BrokenWindows7Apps)

GROUP BY
 SYS.[Name0]
 , SYS.[Operating_System_Name_And0]
 , SYS.[AD_Site_Name0]
 , SYS.[User_Name0]
 , HW.[Model0]
) as systems

on systems.[Computer] = SYS.[Name0]
LEFT JOIN v_GS_Computer_System AS hw
ON SYS.ResourceID = HW.ResourceID
WHERE SYS.[Operating_System_Name_And0] = 'Microsoft Windows NT Workstation 5.1' or SYS.[Operating_System_Name_And0] = 'Microsoft Windows NT Workstation 5.2'
ORDER BY
 SYS.[Name0]
 , SYS.[Operating_System_Name_And0]
 , HW.[Model0]

Tuesday, April 26, 2011

Why I've been quiet

So ...  I've been off, rambling about for the last 6 weeks at a client trying to enjoy this little thing I call life.

Yes, you read that correctly, I left the stability of a full time job doing SCCM administration and Service-Now Architecture to head out into the world as it's newest Sr Consultant pushing solutions using Microsoft System Center based solutions.  So, if you have an implementation need, hey, give me a shout.

I've been off for 6 weeks working on getting a Windows 7 client roll out.  What that means will come about in more details over the next few posts.  I'm hanging around bad hotels, eating boat loads of sushi (literally, I'll have to post some pics) and just in general enjoying long days.  Man, that makes life so much more interesting than working the same old nine to five.

Oh well, time to work on some posts about technology.

Tuesday, March 8, 2011

Mining SCCM data for your Windows 7 Rollout

As many of you are aware, SCCM tracks and keeps a lot of information about the software that runs the PCs (and servers, but today's focus is PC Centric) in your environment.  Lately, I've been trying to find better and better ways to mine data out of SCCM to determine who has which pieces of software installed and how

Monday, January 24, 2011

So ... an interview ...

The Scenario:

Some people may know, some may not, I'm always up to talk to a company or 2 about what might potentially be my next position in my long career.  It's interesting when people start to look at my resume and identify that I'm having a career identity crisis.

Apparently people feel that I should choose whether I want to be a developer or an Infrastructure guy.

Saturday, January 1, 2011

Happy New Year!!!

It's now 2011 and I'm going to back off of how much WoW I play and get more serious about coding and other work that I want to do for fun.

Should be an interesting year.