forked from adbertram/CMClient
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Get-CMClientPendingUpdates.ps1
47 lines (43 loc) · 1.46 KB
/
Get-CMClientPendingUpdates.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#region Get-CMClientPendingUpdates
<#
.SYNOPSIS
This function gets a list of pending software updates for a SCCM client.
.DESCRIPTION
.PARAMETER Computername
The name of the system you'd like to invoke the action on
.EXAMPLE
PS C:\> Get-CMClientPendingUpdates -Computername 'SERVER01'
.EXAMPLE
PS C:\> Get-CMClientPendingUpdates -Computername 'SERVER01' -Summary
.NOTES
#>
function Get-CMClientPendingUpdates {
[CmdletBinding()]
param (
[Parameter(Mandatory = $true,
ValueFromPipeline = $true,
ValueFromPipelineByPropertyName = $true)]
[string[]]$ComputerName = $env:COMPUTERNAME,
[switch]$Summary
)
begin {}
process {
foreach ($Computer in $ComputerName) {
Write-Verbose -Message "Checking for pending updates on $Computer"
if ($Computer -eq $env:COMPUTERNAME) {
$SccmPendingUpdates = Get-WmiObject -Namespace root\ccm\clientsdk -Class CCM_SoftwareUpdate
}
else {
$SccmPendingUpdates = Get-WmiObject -Namespace root\ccm\clientsdk -Class CCM_SoftwareUpdate -ComputerName $Computer
}
if ($Summary) {
$SccmPendingUpdates | Select-Object -Property PSComputerName,ArticleID,@{label=’Deadline’;expression={$_.ConvertToDateTime($_.Deadline)}},Name
}
else {
$SccmPendingUpdates
}
}
}
end {}
}
#endregion