我想获取当前在SCCM客户端软件中心的所有补丁的实时状态。 我尝试使用我在网上找到的多个脚本,但没有一个最终向我显示实时结果。 我可以获取所有当前可用的更新及其相应的软件更新组,这些更新组正在部署这些缺少的修补程序,但尚未发现如何像软件中心当前那样将缺少的修补程序链接到其当前状态。
下面的功能目前有效,是我用来安装缺少的补丁的功能。
Function Install-SCCMPatchesAvailable {
[CmdletBinding()]
param(
[Parameter(
Position = 0,
Mandatory = $false,
ValueFromPipelineByPropertyName = $true,
HelpMessage = "Do not reboot server after patches install")]
[ValidateNotNullOrEmpty()]
[switch]
$DoNotReboot
)
begin {
Write-Verbose "Install-SCCMPatchesAvailable: Started"
}
process {
try {
([wmiclass]'ROOTccmClientSDK:CCM_SoftwareUpdatesManager').InstallUpdates([System.Management.ManagementObject[]] `
(Get-WmiObject -Query 'SELECT * FROM CCM_SoftwareUpdate' -namespace 'ROOTccmClientSDK'))
while (-not((Get-WmiObject -Namespace 'ROOTccmClientSDK' -Class 'CCM_ClientUtilities' -list).DetermineIfRebootPending().RebootPending)) {
$Time = (get-date).ToShortTimeString()
Write-Output "Still Patching @ $Time"
Start-Sleep -s 60
}
if (-not $PSBoundParameters.ContainsKey('DoNotReboot')) {
if ((Get-WmiObject -Namespace 'ROOTccmClientSDK' -Class 'CCM_ClientUtilities' -list).DetermineIfRebootPending().RebootPending) {
(Get-WmiObject -Namespace 'ROOTccmClientSDK' -Class 'CCM_ClientUtilities' -list).RestartComputer()
}
}
}
catch {
Write-Error -Message "Something went wrong with Install-SCCMPatchesAvailable.`n`nError.Exception.Message : $($_.Exception.Message)`nError.Exception.FullName: $($_.Exception.GetType().FullName)"
}
}
end {
Write-Verbose "Install-SCCMPatchesAvailable: Completed"
}
} #End Install-SCCMPatchesAvailable
我想替换:
$Time = (get-date).ToShortTimeString()
Write-Output "Still Patching @ $Time"
Start-Sleep -s 60
软件中心使用其 GUI 界面显示 sccm 软件中心中列出的补丁及其相应的补丁状态(正在下载、安装、等待验证、需要重新启动等)。
我还可以使用我编写的模块查看任何缺少的更新,该模块返回一个或多个缺少的补丁对象。 但是,对象的Status
只能显示Missing
或Installed
。 不是修补程序的实际 SCCM 状态。 例:
SCCMPatchDeploymentName : .MS_Server_Engineering_Patch_Testing - Post Basline OSs QAC
Testing
ComputerName : FSL04231
__GENUS : 2
__CLASS : CCM_UpdateStatus
__SUPERCLASS :
__DYNASTY : CCM_UpdateStatus
__RELPATH : CCM_UpdateStatus.UniqueId="5dc25e3e-31b9-4ac7-b1b7-a62a982139
0d"
__PROPERTY_COUNT : 15
__DERIVATION : {}
__SERVER : FSL04231
__NAMESPACE : ROOTccmSoftwareUpdatesUpdatesStore
__PATH : \FSL04231ROOTccmSoftwareUpdatesUpdatesStore:CCM_UpdateSt
atus.UniqueId="5dc25e3e-31b9-4ac7-b1b7-a62a9821390d"
Article : 4088787
Bulletin :
ExcludeForStateReporting : False
Language :
ProductID : 0fa1201d-4330-4fa8-8ae9-b877473b6441
RevisionNumber : 202
ScanTime : 20180516214114.000000+000
Sources : {{7D052A75-2032-4F02-BAC9-9EDA4DBD58DE}}
SourceType : 2
SourceUniqueId : {7D052A75-2032-4F02-BAC9-9EDA4DBD58DE}
SourceVersion : 82
Status : Missing
Title : 2018-03 Cumulative Update for Windows Server 2016 for
x64-based Systems (KB4088787)
UniqueId : 5dc25e3e-31b9-4ac7-b1b7-a62a9821390d
UpdateClassification : 0fa1201d-4330-4fa8-8ae9-b877473b6441
PSComputerName : FSL04231
软件中心显示软件安装和播发的进度。除了已安装/丢失之外,它不显示补丁状态,因此我怀疑如果您想枚举该补丁的进度状态,则需要抓取日志以确定客户端是否对每个相应的补丁执行任何操作以在运行时创建计算状态消息。