Cómo saber qué software antivirus está instalado en una computadora remota con Windows

Windows 10 tiene un antivirus decente integrado en el sistema, a saber, Windows Defender. Para obtener detalles sobre su estado, simplemente use este cmdlet para averiguarlo.

Get-MpPreference

Sin embargo, si tiene instalado un antivirus de terceros, Get-MpPreference ya no es lo suficientemente bueno, ya que solo funciona y revela información sobre Windows Defender. Utilice lo siguiente en su lugar:

Get-CimInstance -Namespace root/SecurityCenter2 -Classname AntiVirusProduct

Para usarlo en una computadora remota, agregue -Nombre del computador cambiar junto con el comando.

Get-CimInstance -Namespace root/SecurityCenter2 -Classname AntiVirusProduct -ComputerName $computer

Profundizando un poco más, ¿cómo averiguar el estado del software AntiVirus instalado?

Codificado en ProductState propiedad son una serie de piezas adicionales de información, como si el motor AV está operativo y si utiliza las firmas de datos actualizadas. Para descifrar el significado de esta información, consulte esta publicación que demuestra cómo usar el nuevo soporte de PowerShell para enumeraciones.

Para poner todo junto

# define bit flags
 
[Flags()] enum ProductState 
{
      Off         = 0x0000
      On          = 0x1000
      Snoozed     = 0x2000
      Expired     = 0x3000
}
 
[Flags()] enum SignatureStatus
{
      UpToDate     = 0x00
      OutOfDate    = 0x10
}
 
[Flags()] enum ProductOwner
{
      NonMs        = 0x000
      Windows      = 0x100
}
 
# define bit masks
 
[Flags()] enum ProductFlags
{
      SignatureStatus = 0x00F0
      ProductOwner    = 0x0F00
      ProductState    = 0xF000
}
 
# get bits
$infos = Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntiVirusProduct -ComputerName $computer
ForEach ($info in $infos){
    [UInt32]$state = $info.productState
 
    # decode bit flags by masking the relevant bits, then converting
    [PSCustomObject]@{
          ProductName = $info.DisplayName
          ProductState = [ProductState]($state -band [ProductFlags]::ProductState)
          SignatureStatus = [SignatureStatus]($state -band [ProductFlags]::SignatureStatus)
          Owner = [ProductOwner]($state -band [ProductFlags]::ProductOwner)
    }
}

El resultado es bastante bueno.

imagen 9 600x212 - Cómo saber qué software antivirus está instalado en una computadora remota con Windows

Lo que sería más útil es ejecutar el script a través de una red completa para evaluar cómo se implementa y mantiene el software AntiVirus en su red.

Deja un comentario