Powershell:查找已安装的防病毒软件和状态 筛选出 WindowsDefender

我在这里的另一篇文章中遇到了这个脚本的基础,但是,我想进一步尝试一下。我想要实现的是获取设备上安装的防病毒软件的名称,状态,当然我想过滤掉 Windows Defender。

我在这里的另一篇文章中遇到了这个脚本的基础,但是,我想进一步尝试一下。我想要实现的是获取设备上安装的防病毒软件的名称,状态,当然我想过滤掉 Windows Defender。

我目前的代码,我不知道如何解决的问题是,我得到的状态 code 为 Windows Defender 也。

我将非常感谢你的建议和帮助。

clear
function Get-AntivirusName { 
[cmdletBinding()]     
param ( 
[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}{"Anti-Virus is NOT installed!";Continue}
        {$AntivirusNames.Count -eq 1 -and $_ -eq "Windows Defender"} {Write-host "ONLY Windows Defender is installed!";Continue}
        {$_ -ne "Windows Defender"} {"Antivirus Product(s): $_."}
   }
}
Get-AntivirusName
1

如果你想排除 Windows Defender,但希望得到一个控制台消息,我会改变如下功能:

function Get-AntivirusName { 
    [cmdletBinding()]     
    param ( 
        [string]$ComputerName = $env:COMPUTERNAME, 
        $Credential 
    ) 
    $wmiQuery = "SELECT * FROM AntiVirusProduct" 
    $AntivirusProduct = @(Get-CimInstance -Namespace "root\SecurityCenter2" -Query $wmiQuery  @psboundparameters)
    if ($AntivirusProduct.Count -eq 0) {
        Write-Host 'Anti-Virus is NOT installed!' -ForegroundColor Red
    }
    elseif ($AntivirusProduct.Count -eq 1 -and $AntivirusProduct.displayName -like '*Windows Defender*') {
        Write-Host 'ONLY Windows Defender is installed!' -ForegroundColor Cyan
    }
    else {
        # filter out Windows Defender from the list
        $AntivirusProduct = $AntivirusProduct | Where-Object {$_.displayName -notlike '*Windows Defender*'} | Sort-Object -Unique
        # output objects with both the product name and the status
        foreach ($avProduct in $AntivirusProduct) {
            [PsCustomObject]@{
                _Product = $avProduct.displayName
                _Status  = $avProduct.productState
            }
        }
    }
}
Get-AntivirusName

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(326)
Laravel的邮件发送作业之一不工作
上一篇
SlateAPI文档的自定义主题
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(83条)