Several years ago I started to use Jason Sandys’ OSDInfo Script. I liked the idea of having a script run during OSD that would write information to WMI, which made it easy to inventory. Now I do IPU (In Place Upgrade) so much more than OSD, and I wanted to do the same, gather important information from IPU and be able to use it for Reporting or creating collection queries.
I’ve taken Jason’s script and modified it… a lot. All of his plumbing is still in place (functionality to add information to WMI & Registry), but I’ve added a lot of logic around using the script for different functions.
The script is now broken into 3 sections, OSD (Operating System Deployment), CS (Compatibility Scan), IPU (In Place Upgrade). Using TS Variables, the script will run different sections of the script. This allows me to use the same script in numerous scenarios.
First, I’ll show you results, and then go into details about how it’s done. But I feel it’s easier to understand the script and process if you can see the end product.
Ever want to know where in the CCMCache the content was located for that package that was downloaded? Ever think you found it, then figured out it wasn't the most updated version of the content? I quick wrote this script to help me find where in the cache the content is located, and spits back the most updated version of it. Read more
Bonus: Learn to use Gmails SMTP service.
Updated 3/6 - added auto close feature, so if user ignores the window, it will auto close allowing the TS to continue. (Updated the 3rd Form image below to reflect the change)
Or if some of you awesome PowerShell guys want to make my code pretty and add that feature... 🙂
As I try to improve the user experience for in-place upgrades, notifications came to mind, and how to incorporate that into the process. Using the TS variable _SMSTSUserStarted = true, I launch a powershell driven “front end” to collect the user’s email, cell number & provider, then use that to notify user when process is complete.
Update 3/15 - Ran several more tests to learn what actions are available to run during Provisioning mode. Scroll to bottom for updates.
I’ve been doing a lot of testing with Provisioning Mode. I needed to know what was going on when a system was in provisioning mode.
Quick Overview of what works and what is difference. (As I continue testing, I'll continue to update this list)
- Works Normally
- Software Center
- Lists all Deployments available & required it knew about before entering provisioning mode
- Can Install any of those by clicking "Install"
- ConfigMgr Control Panel
- You can still trigger actions, or change cache size
- By Triggering Actions, you can get deployments to install if they are past deadline
- Policy doesn't update Automatically
- Does NOT report to CM (Inventory)
- Does NOT run Required Deployments automatically once deadline hits.
If (You Enjoy Reading)
I thought that was a clever title, but it seems more confusing the longer I look at it… anyway, this is the follow up post to take BGinfo from MDT, and add it’s capabilities to the ConfigMgr In-Place Upgrade Task Sequence Process. If you’ve been working with in-place upgrade task sequences, you’ll know they are a different beast than regular OSD. You can’t just call an application and expect it to show up on the screen.. like in OSD, you can say Command Line Step: notepad.exe… and guess what, a notepad.exe window opens during the TS.. freaking amazing! Read more