Scripting bulk client actions.

I had about 11 applications rolling out this weekend. Tonight, I saw about 200 systems hung up in the “Content Downloaded” status. They were well past the deadline date/time but had not yet enforced. I couldn’t find a common denominator, if I connected to any of them in Client Center and ran the App Deployment Cycle, they installed immediately. My maintenance window was closing, so I needed to focus on resolution rather than going CSI: on the issue.

Current Branch allows you to right click a collection and Notify clients to evaluate Application Policies, but there is not yet the same functionality in the Monitoring tab for particular groups with same reported status on a deployment.

Double Clicking the “Content downloaded” header gives you a copy-pastable list of clients. I stripped out the client names and saved them in a text file. I mass-triggered the Application Deployment Cycle with the following script:

$clients = Get-Content C:\users\chris\desktop\clients.txt
ForEach ($client in $clients)
Invoke-WMIMethod -ComputerName $client -Namespace root\ccm -Class SMS_CLIENT -Name TriggerSchedule "{00000000-0000-0000-0000-000000000121}"

I suppose you could take the same list and create a collection, then trigger the client notification from the console. I use this simple script frequently for quickly getting things run on clients. Things like cycling the ccmexec service (or changing cache value and cycling ccmexec), where SCCM would not be practical.

SystemCenterDudes has an extensive list of triggers you can plug into this script HERE. You could also use this with the CCMCache script I posted HERE earlier this month.

Creating a ConfigMgr lab environment

I’ve been toying with the idea of bringing up a lab for tinkering around with Configuration Manager lately. It’s something I’d love to do at work but there’s not enough time and never will be. Since Windows 10 offers the Hyper-V role, I decided to give it a shot. I’m running all of this on a Core i5 w/ 16GB RAM until I can build up something more substantial.

My background is desktop support. I spent a few years at Geek Squad driving the bug, setting up wireless routers, and watching the company slowly turn technicians into sales people. This drove me to corporate I.T. and desktop support. I spent three or four years doing that before I had finally picked up enough responsibilities to make it official as a system admin. That said, I’ve never had the opportunity to setup a domain from scratch before, outside of the labs for the MCSA course for Server 2012. A few downloads and a couple VMs later..


I’m not going to make step-by-step instructions for getting the labs ready for ConfigMgr as there is plenty out there. Here are some useful links and my notes. My daily work is in an environment with a CAS and three primaries with 8 DPs. For now, my lab will consist of a standalone Primary site with all roles.

It’s worth noting that in production, I’ve read that you shouldn’t use an external DNS name for your AD forest. Not a problem in this lab environment, but in the real world I’d do something like Not sure of all the ramifications, but if I gave them Internet access I know my clients wouldn’t load this blog by visiting “” without being preceded by www. It also goes without saying that this is a bare minimum configuration to bring up a working domain, and I won’t be focusing on Best Practices other than Configuration Manager stuff.

Domain Controller: DC.SCCMCHRIS.COM
Windows 7 Ent. Client: CLIENT-W7.SCCMCHRIS.COM
Windows 10 Ent. Client: CLIENT-W10.SCCMCHRIS.COM

Downloads and notes..

Windows Server 2016

Configuration Manager 1606 / CB

SQL Server 2016

Sweet packaged Hyper-V systems for Windows 7, 8, 10.

Lab Setup Guide

Install Server 2016 on DC VM
Install Server 2016 on Primary VM
Create External switch in Hyper-V for DC Internet access (optional)
Create Internal switch in Hyper-V for use between VMs
On DC, install DNS/DHCP/AD DS roles.
Promote system to DC, create forest
Add second network adapter on internal network virtual switch, configure static IP. I used This adapter will be on the same virtual switch as all other VMs.
Configure dhcp. add a scope to assign, set router and all else to
Connect other systems virtual adapter to the internal network
clients receiving IPs after this step.
Create a domain user, add to domain admins
Join clients to newly created domain with new account

Creating snapshots and calling it a day. Ready  to begin pre-req installation for 1606!

#2016, #configmgr, #lab, #windows-server