Dzisiaj zaprezentuję Wam skrypt, który pobierze z określonego OU w AD listę serwerów i wyświetli dla nich status poszczególnych opcji ochrony w Defenderze.
W pierwszym kroku musimy pobrać listę komputerów lub serwerów. Jeśli mamy to gdzieś w pliku to możemy tej listy użyć. Ja jednak pobieram listę maszyn z AD.
1 2 |
$ComputerList=Get-ADComputer -SearchBase "OU=Servers,OU=company,DC=domain,DC=local" -Filter 'enabled -eq "true"' | Select-Object -ExpandProperty Name $ComputerList.Count |
Zmienna $ComputerList będzie zawierała wszystkie hosty do sprawdzenia.
Teraz przedstawię kod, który sprawdza kolejne hosty z listy i odpytuje o status AV. Wprowadziłem też zabezpieczenie aby niedostępne hosty nie były widoczne w ostatecznym raporcie.
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 |
[int]$i=1 $AVReport = @() foreach ($comp in $ComputerList) { $i++ if(Test-Connection -ComputerName $comp -Count 1){ $status = Invoke-Command -ComputerName $comp -ScriptBlock { Get-MpComputerStatus } If ($status) { $AVReport+=New-Object -TypeName PSObject -Property ([ordered]@{ "Computer Name"= $comp "AntiMalware" = $status.AMServiceEnabled "AntiSpyware"=$status.AntispywareEnabled "AntiVirus"=$status.AntivirusEnabled "AntiVirus Signatures"=$status.AntivirusSignatureLastUpdated "Behavior Monitor"=$status.BehaviorMonitorEnabled "NIS"=$status.NISEnabled "Access Protection"=$status.OnAccessProtectionEnabled "Realtime Protection"=$status.RealTimeProtectionEnabled "Rebot Req" = $status.RebootRequired }) } } } |
W zależności od postaci w jakiej chcemy wyświetlić raport możemy użyć polecenia
1 |
$AVReport | Format-Table -AutoSize |
Po wykonaniu polecenia, wynik wyświetlony zostanie w oddzielnym oknie.
1 |
$AVReport | Out-GridView |