Powershell: Encontrar el antivirus instalado y su estado, filtrando el antivirus de Windows Defender.
Encontré la base de este script en otra publicación aquí, sin embargo, me gustaría llevarlo un poco más lejos y he estado experimentando. Lo que estoy buscando lograr es obtener el nombre y estado del antivirus instalado en el dispositivo y, por supuesto, quiero filtrar Windows Defender. Aquí está lo que tengo hasta ahora…
El problema que tengo con el código actual del que no estoy seguro de cómo solucionar es que también obtengo el código de estado para Windows Defender.
Agradecería mucho su consejo y ayuda.
limpiar
function Get-AntivirusName {
[cmdletBinding()]<br>
parámetro (
[string]$ComputerName = "$env:computername" ,
$Credential
)
$wmiQuery = "SELECT * FROM AntiVirusProduct"
$AntivirusProduct = Get-WmiObject -Namespace "root\SecurityCenter2" -Query $wmiQuery @psboundparameters
[array]$AntivirusNames = $AntivirusProduct.displayName | sort -unique
[array]$AntivirusState = $AntivirusProduct.productState | sort -unique
$AntivirusState
Switch($AntivirusNames) {
{$AntivirusNames.Count -eq 0}{"¡El antivirus NO está instalado!";Continue}
{$AntivirusNames.Count -eq 1 -and $_ -eq "Windows Defender"} {Write-host "¡SOLO Windows Defender está instalado!";Continue}
{$_ -ne "Windows Defender"} {"Producto(s) antivirus: $_."}
}
}
Get-AntivirusName
davy.ai
Solución
Para filtrar Windows Defender de los productos antivirus, se puede agregar una condición adicional en el bloque
Switch
verificando el estado del código de producto de Windows Defender. El código de estado del producto para Windows Defender es 393472.Aquí está el código modificado:
Con este código, el bloque
Switch
verifica el nombre del producto antivirus y también su código de estado. Si el nombre del producto es “Windows Defender” y el código de estado es 393472, se salta. Si el nombre del producto no es “Windows Defender” y el código de estado no es 393472, se muestra.