public/Get-SCCMPatchAuditInfo.ps1
function Get-SCCMPatchAuditInfo { Param ( $ComputerName, $KBs, [System.Management.Automation.PSCredential] $Credential ) $scriptblock = { $kbs = $using:kbs $keypaths = "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*","HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" $data = foreach ($path in $keypaths){Get-ItemProperty $path | Select-Object @{N='Name';E={$_.DisplayName}}, @{N='Version';E={$_.DisplayVersion}}, Publisher, InstallDate} $data = $data | Where-Object {$_.name} $Manufacturer = (Get-CimInstance win32_computersystem).manufacturer $sccm = (Get-CimInstance -Namespace root\ccm -Class SMS_Client).ClientVersion $scom = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\setup").AgentVersion $lastbootup = (Get-CimInstance -ClassName win32_OperatingSystem).lastbootuptime $os = (Get-CimInstance win32_operatingsystem).Caption $hotfixes = Get-Hotfix $MSRT = (Get-Item "C:\Windows\System32\MRT.exe").versioninfo.ProductVersion #$list = $data | Where-Object {$programs -match $_.Name} | select name,version $object = [pscustomobject] @{ ComputerName = $env:computername IsPhysical = if ($manufacturer -like "VMWare*"){""}else{"$true"} OperatingSystem = $os LastReboot = $lastbootup MSRT = $MSRT Chrome = ($data | Where-Object {$_.Name -like "Google Chrome*"}).Version -join ";" Firefox = ($data | Where-Object {$_.Name -like "Mozilla firefox*"}).Version -join ";" VMTools = ($data | Where-Object {$_.Name -like "VMware Tools*"}).Version -join ";" JavaJRE = ($data | Where-Object {$_.Name -like "Java 8*"}).Version -join ";" JavaJDK = ($data | Where-Object {$_.Name -like "Java SE Development Kit 8*"}).Version -join ";" FlashActivex = ($data | Where-Object {$_.Name -like "*Flash*ActiveX*"}).Version -join ";" FlashNPAPI = ($data | Where-Object {$_.Name -like "*Flash*NPAPI*"}).Version -join ";" FlashPPAPI = ($data | Where-Object {$_.Name -like "*Flash*PPAPI*"}).Version -join ";" SCCM = $sccm SCOM = $scom } foreach ($kb in $kbs){ #$baseline | Add-Member NoteProperty -Name "Enabled" -Value $true $value = if ($hotfixes.hotfixid -contains $kb){$true}else{""} $object | Add-Member NoteProperty -Name "$kb" -Value $value } return $object }# end script block #Execute Scriptblock on Computername(s) with set parameters. $params = @{ ScriptBlock = $scriptblock } if ($ComputerName){ $params['ComputerName'] = $ComputerName } if ($Credential){ $params['Credential'] = $Credential } Invoke-Command @params } |