我们购买了符合PCI标准的网络和软件解决方案:TrustWave.我们开始安装防病毒软件,但意识到在安装它的机器上不需要它,并且想要安装不同的解决方案.
该程序的出席卸载工作正常.无人值守的安装不是很干净.虽然它支持静音开关,但它本身很多都被遗忘了.我编写了大部分脚本,但有一部分我遇到了问题:Windows仍然将该软件视为安装为防病毒产品.看看如何确认这一点来到from WMI
Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct
我很难找到如何擦除这些信息.搜索只会让我找到有关安装或删除已经完成的整个防病毒产品的解决方案.
有没有办法专门写入此命名空间(或等效的注册表),以便Windows忘记安装它?我意识到这个请求可能被视为恶意.
安装其他防病毒软件很可能会解决此问题,但有些机器将在没有运行的情况下运行,因此这些信息仍然有用.
从未测试过它,但它会像这样的脚本:
On Error Resume Next Set shell = CreateObject("WScript.Shell") Set getOSVersion = shell.exec("%comspec% /c ver") version = getOSVersion.stdout.readall Select Case True Case InStr(version,"n 5.") > 1 : GetOS = 0 'pre vista Case InStr(version,"n 6.") > 1 : GetOS = 1 'vista/post vista Case Else : GetOS = -1 End Select strComputer = "." If GetOS = 0 Then Set oWMI = GetObject( _ "winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\SecurityCenter") Set colItems = oWMI.ExecQuery("Select * from AntiVirusProduct") For Each objItem In colItems objItem.Delete_ Next End If If GetOS = 1 Then Set oWMI = GetObject( _ "winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\SecurityCenter2") Set colItems = oWMI.ExecQuery("Select * from AntiVirusProduct") For Each objItem In colItems objItem.Delete_ Next End If
我认为它会起作用,因为另一个代码示例遵循相同的格式,如here所示,但没有删除项.
PowerShell等价物
Get-WmiObject -Namespace root\SecurityCenter2 -Class AntiVirusProduct | ForEach-Object{$_.Delete()}
这也可以使用-Computer参数远程运行.