Latest Event Updates

Web Report for Software Updates Compliance

Posted on Updated on

SCCM doesn’t have a precreated report (that I can find) that quickly shows the patch compliance for a group of systems.  So I created one for myself, that I thought I’d share with every one.  To implement this, create a web report as you normally would; use the following SQL statement and remember to create a prompt with the information below that!

SQL Statement

select distinct sys.Name0, ui.BulletinID as BulletinID, ui.ArticleID as ArticleID, ui.Title as Title
from v_UpdateComplianceStatus css
join v_UpdateInfo ui on ui.CI_ID=css.CI_ID
join v_R_System sys on css.ResourceID=sys.ResourceID
join v_ClientCollectionMembers ccm on ccm.ResourceID=sys.ResourceID
where css.Status=2 and ccm.CollectionID=@CollID
order by sys.Name0, ui.ArticleID


Name: CollID
Prompt text: Collection ID
Provide a SQL statement:

begin  if (@__filterwildcard = '')
select CollectionID as CollectionID, Name as CollectionName
from v_Collection
order by Name
   select CollectionID as CollectionID, Name as CollectionName
   from v_Collection
   WHERE CollectionID like @__filterwildcard or Name like @__filterwildcard
   order by Name end

Scripting HP SoftPaqs

Posted on Updated on

Ever needed to know how to silently install an HP SoftPaq?  I recently needed to figure out the switches for approximately 75 individual SoftPaqs.  Fortunately, HP has standardized the switch to extract the setup files from the InstallShield executable.

  1. From a command line, simply call the .exe with /s to perform a silent extraction.
    Note: In some cases, no additional switches will be necessary and InstallShield will pass to the setup program the command to silently install.  If this is the case, then mark this as the only install switch you need.
  2. Change the working directory to where the files were just extracted.
  3. Do a directory list to find the name of the setup file, which will likely be Setup.exe
  4. Discover the switches that will work for that setup program.  This could be anything of the following
    • /s
    • /silent
    • -s
    • /q
    • /S /v/qn
    • /k – This is switch is very common for ATI Graphics controllers!
  5. Once you have found the silent install switches for the setup program, then you’re final switches become /s /a /SetupSwitch(es)

For BIOS related SoftPaqs, I find that it’s easiest to extract all of the files and then run HPQFlash.exe -s

MMS 2009 – Day 4 & 5

Posted on Updated on

Sorry, got a little behind in posts ;-)

My day 4 of MMS 2009 was focused on migrating to Native mode for SCCM and various SCCM implmentations in the field.  The Native mode sessions thoroughly stressed the need to have a well planned PKI environment.  Though it may be a daunting challenge to migrate with issues, I’m confident that it can be done.  It is also interesting to hear of some of the issues that existed in the field and some of the custom implementations that others are doing…they gave me some good ideas of things to potentially implement (of which I would share on this blog).

MMS day 5, a sad closing to the week.  Nothing was wrong with the day, but MMS is such a great experience and a great place to learn more on systems management that it was sad to have to end.  However, my brain was sure full and ready for a break!  Anyhow, I’ve always wondered how custom console extensions are built.  Convienantly enough, there was an actual session on it this year!  I understand the gist of what is being done, but I need to dig into it and formulize a step-by-step process for how to build them.  Again, when I am able to do this, I’ll post on this blog to share!

I never take as many pictures as I want when I’m Vegas, but here are a few from Thursday’s closing party.  Thanks to Jeremiah Beckett and everyone at Secure Vantage for sponsoring it!

MMS 2009 – Day 3

Posted on Updated on

Nothing quite as siginificant on Day 3 of MMS.  Most of my sessions were to gain a better understanding of how SCCM, being extended with MDT 2010, helps “significantly” improve OS deployments.  Unfortunately, I don’t see how the additions can help; part of it is probably that the environment  of the systems [at our company] doesn’t have a need for some of the things.  In a brief discussion with Mike Niehaus, he tried laying out some of those things for me in the form of “Have you ever wanted to try to do insert challenge here with SCCM but couldn’t?  Check out MDT”.  But everything he listed were things I could already do in SCCM or had not interest in doing.  What I took away from the conversation was that if I ever think about how to do something out-of-the-box with SCCM, then I should check to see if MDT can already do it; which is a good take away for me.

MMS 2009 – Day 2

Posted on Updated on

The first session of the day is always one of the better sessions of MMS – the SCCM State of the Union – an all emcompassing update on what has changed to SCCM in the last 6 months and what is coming up in the future.  A couple of big takeaways are that SP2 will need to be installed in order to have support for Windows 7, there has been significant in the arena of Client Health, and SCCM v.Next eliminates its dependency upon the MMC consoles (which is a huge plus as the console frequently fails).

USMT 4.0 seemed to be the hottest topic on the day as it was talked about in nearly every session that I attended.   The new version has significant enhancements and improvements that (from my opinion) should be implemented right away.  During one of the BOF (open participatory) sessions, I learned about some of the challenges of the previous versions from real-world-admins in the room and then heard from Microsoft how the new version rectifies them.

MMS 2009 – Day 1

Posted on Updated on

Just completed day 1 of the Microsoft Management Summit.  My biggest takeaway from the day is the realization of how simple PowerShell can be to learn, and how useful it can be for automating tasks or getting dynamic system information that isn’t natively possible in SCCM (like getting active process usage throughout the day and exporting to a .csv file).  PowerShell can easily be used to gather information for short term tasks rather than extending SCCM inventories (which would need to be a long-term investment).  Additionally, PowerShell can still be used to create COM objects (like WScript.Shell in VBScripting) to accomplish tasks, which will help in the transition.

I also had a brief opportunity to talk with a couple of people with MyITForum (one being the great Rod Trent).  Hope to be able to run into some more.  Especially hoping to meet some of the MVPs in the SCCM realm!

Looking forward to day 2!

Handling Chassis Types In SCCM OSD

Posted on Updated on

One of the challenges with condensing workstation task sequences into a single task sequence is being able to distinguish between desktops and laptops as each typically has their own set of functions to perform when being imaged.  One of the best ways to determine this is by querying ChassisTypes in Win32_SystemEnclosure.  Unfortunately, ChassisTypes is an array value; the WQL that is used in the task sequence is limited to single values.

To work with this, add the following vbscript to a Run Command Line task.  It creates a custom Task Sequence variable that can then be used to dynamically limit certain tasks to “desktops” and others to “laptops”.

' NAME: SMSTSEnvChassisType.vbs
' AUTHOR: Nick Moseley, SCCM Administrator
' DATE  : 4/24/2009
' COMMENT: Script creates custom TS variable that can be used to distinguish
' between a desktop and a laptop for dynamically selecting which tasks
' to run in the sequence. Note that the echo statements are logged in SMSTS.log
Dim oTaskSequence, oWMI, colChassis, sChassisType, oChassis
Set oTaskSequence = CreateObject ("Microsoft.SMS.TSEnvironment")
Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colChassis = oWMI.ExecQuery("Select * from Win32_SystemEnclosure")
For Each oChassis in colChassis
For  Each sChassisType in oChassis.ChassisTypes
  Select Case sChassisType
      Case 8
                Wscript.Echo "Chassis Type: Portable"
                oTaskSequence ("OSDImageType") = "laptop"
            Case 9
                Wscript.Echo "Chassis Type: Laptop"
                oTaskSequence ("OSDImageType") = "laptop"
            Case 10
                Wscript.Echo "Chassis Type: Notebook"
                oTaskSequence ("OSDImageType") = "laptop"
            Case 12
                Wscript.Echo "Chassis Type: Docking Station"
                oTaskSequence ("OSDImageType") = "laptop"
            Case Else
                Wscript.Echo "Chassis Type: Unknown"
                oTaskSequence ("OSDImageType") = "desktop"
  End Select