Get-CMClientUpdates.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
48
#region Get-CMClientUpdates
<#
.SYNOPSIS
 This function gets a list of 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-CMClientUpdates -Computername 'SERVER01'
.EXAMPLE
    PS C:\> Get-CMClientUpdates -Computername 'SERVER01' -Summary
.NOTES
 
#>

function Get-CMClientUpdates {

    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true,
   ValueFromPipeline = $true,
   ValueFromPipelineByPropertyName = $true)]
        [string[]]$ComputerName = $env:COMPUTERNAME,
        [switch]$Summary
        )

    begin {}
    process {

        foreach ($Computer in $ComputerName) {
            if ($Computer -eq $env:COMPUTERNAME) {
                $SccmUpdates = Get-WmiObject -Namespace root\ccm\SoftwareUpdates\UpdatesStore -Class CCM_UpdateStatus
                }
            else {
                $SccmUpdates = Get-WmiObject -Namespace root\ccm\SoftwareUpdates\UpdatesStore -Class CCM_UpdateStatus -ComputerName $Computer
                }
            if ($Summary) {
                $SccmUpdates | Select-Object -Property PSComputerName,Article,@{label=’ScanTime’;expression={$_.ConvertToDateTime($_.ScanTime)}},Status,Title
                }
            else {
                $SccmUpdates
                }
            }
        }
    end {}
    }
#endregion