If you want to trigger an update available from CM in Software Center via a PowerShell script, you can use something like the following:
$UpdateID = 'Site_1EED8E47-D4D8-4823-883C-4FFE753FA233/SUM_0af47e05-17cb-4756-8610-09ce486df1ba'
$Instance = @(Get-CimInstance -Namespace ROOT\ccm\ClientSDK -ClassName CCM_SoftwareUpdate -Filter "UpdateID like '$UpdateID'")
If ($Instance) {
Invoke-CimMethod -Namespace ROOT\ccm\ClientSDK -ClassName CCM_SoftwareUpdatesManager -MethodName InstallUpdates -Arguments @{CCMUpdates = [ciminstance[]]$Instance}
}
# And then this to get details on the Progress
start-Sleep -seconds 60
$Instance = @(Get-CimInstance -Namespace ROOT\ccm\ClientSDK -ClassName CCM_SoftwareUpdate -Filter "UpdateID like '$UpdateID'")
write-host "Current Update State: $($Instance.EvaluationState)"
write-host "Current Update Progress: $($Instance.PercentComplete)"
Properties of the CCM_SoftwareUpdate class are laid out here: https://docs.microsoft.com/en-us/mem/configmgr/develop/reference/core/clients/sdk/ccm_softwareupdate-client-wmi-class
EvaluationState property actually has 24 states. But, most of the time, we'll be interested in only the bolded below.
ID | State Name |
0 | ciJobStateNone |
1 | ciJobStateAvailable |
2 | ciJobStateSubmitted |
3 | ciJobStateDetecting |
4 | ciJobStatePreDownload |
5 | ciJobStateDownloading |
6 | ciJobStateWaitInstall |
7 | ciJobStateInstalling |
8 | ciJobStatePendingSoftReboot |
9 | ciJobStatePendingHardReboot |
10 | ciJobStateWaitReboot |
11 | ciJobStateVerifying |
12 | ciJobStateInstallComplete |
13 | ciJobStateError |
14 | ciJobStateWaitServiceWindow |
15 | ciJobStateWaitUserLogon |
16 | ciJobStateWaitUserLogoff |
17 | ciJobStateWaitJobUserLogon |
18 | ciJobStateWaitUserReconnect |
19 | ciJobStatePendingUserLogoff |
20 | ciJobStatePendingUpdate |
21 | ciJobStateWaitingRetry |
22 | ciJobStateWaitPresModeOff |
23 | ciJobStateWaitForOrchestration |
In State 7, ciJobStateInstalling, the PercentComplete property populates and becomes useful.
In State 13, ciJobStateError, the ErrorCode property (usually) populates and becomes useful.
Add new comment