$wsusserver = "WSUS-server" $base = "OU=Servers,DC=ldap389,DC=info" [void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") $wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer($wsusserver,$False) $d = [DateTime]::Today.AddDays(-30) $computers = Get-ADComputer -Filter 'PasswordLastSet -ge $d' -Searchbase $base -Properties OperatingSystemVersion,OperatingSystemServicePack,dNSHostName,OperatingSystem $groups = $wsus.GetComputerTargetGroups() foreach($computer in $computers) { if (($computer.OperatingSystemVersion -lt "5.1") -or (($computer.OperatingSystemVersion -like "5.1*") -and ($computer.OperatingSystemServicePack -ne "Service Pack 3")) -or (($computer.OperatingSystemVersion -like "5.2*") -and ($computer.OperatingSystemServicePack -ne "Service Pack 2")) -or (($computer.OperatingSystemVersion -like "6.0*") -and ($computer.OperatingSystemServicePack -ne "Service Pack 2"))) {$computer.Name + ';' + $computer.OperatingSystem + ';' + $computer.OperatingSystemServicePack | Out-file NOK-OSVersion.csv -append} else { $isinwsus = "nok" foreach($group in $groups) { if ($group.Name -ne "All Computers"){ $file = $group.Name + '.csv' ($wsus.getcomputertargetgroup($group.Id)).GetComputerTargets() |%{if ($_.FullDomainName -eq $computer.dNSHostName) {$computer.name +';'+$group.Name+';'+$_.LastSyncTime+';'+ $_.LastSyncResult + ';' + $computer.OperatingSystem + ';' + $computer.OperatingSystemServicePack | Out-file $file -append ; $isinwsus = "ok"}} } } if ($isinwsus -eq "nok") {$computer.Name + ';' + $computer.OperatingSystem + ';' + $computer.OperatingSystemServicePack | Out-file NOK-wsus.csv -append} } }