SCCM Mandatory Assignment with Powershell

02 Mar 2012 by Ryan Ververs-Bijkerk



SCCM Mandatory Assignment with Powershell

I had to automate some steps in SCCM. Therefore I created a GUI based tool with powershell to import applications in SCCM. It also creates advertisements for each application. My customer requires mandatory assignment, based on the date and time in the advertisement of the application. I wrote the following code to create an advertisement with a mandatory assignment. Some variables are required

$AppName = Application name
$Site = SCCM Site
$CollectionID = The ID from the collection
$PackageID = The ID from the package
$SCCMServer = SCCM Server Name.
$Program = Get-WmiObject -ComputerName $Computer -Namespace "root\SMS\Site_$Site" -Query "Select * from SMS_Program WHERE PackageID = '$packageID'"

# Get the current date + time
$Format = get-date -format yyyyMMddHHmmss
$Date = $Format + ".000000+***"

# Create Assigment Time
$sceduleTime = ([WMIClass] "\\$Computer\root\sms\site_$site`:SMS_ST_NonRecurring").CreateInstance()

$sceduleTime.DayDuration = 0
$sceduleTime.HourDuration = 0
$sceduleTime.MinuteDuration = 0
$sceduleTime.IsGMT = "false"
$sceduleTime.StartTime = $Date

# Create Advertisment
$Advertisement = ([WMIClass] "\\$Computer\root\sms\site_$site`:SMS_Advertisement").CreateInstance()

$Advertisement.AdvertFlags = "33685504";
$Advertisement.AdvertisementName = $AppName;
$Advertisement.CollectionID = $CollectionID;
$Advertisement.PackageID = $packageID;
$Advertisement.AssignedSchedule = $sceduleTime;
$Advertisement.DeviceFlags = 0x01000000;
$Advertisement.ProgramName = $Program.ProgramName;
$Advertisement.RemoteClientFlags = "72";
$Advertisement.PresentTime = $Date;
$Advertisement.SourceSite = $Site;
$Advertisement.TimeFlags = "24593"

# Apply Advertisement

To get the correct AdvertFlags, DeviceFlags and RemoteClientFlags, create an advertisement with your requirements and collect the settings from the WMI.

NOTE: First test the script in a test environment before running in production. Use at your own risk!

If you have a question or suggestion, leave a comment.

    mandatory assignment
Ryan Ververs-Bijkerk
Written by Ryan Ververs-Bijkerk

Ryan is currently a Technical Evangelist at RawWorks focused on the End-User Computing area. Ryan is primarily focusing on the user experience in centralized desktop environments.


    Follow me