如何查看MS15-011 / 15-014(JASBUG)?

时间:2015-03-19 18:04:12

标签: powershell registrykey

我正在尝试构建一个PowerShell脚本来检查此漏洞的计算机。但我想在注册表级别进行检查。我不相信KB3000483的添加/删除程序列表。我需要确定SMB和GPO设置正确。我需要这个,因为我正在对100多台机器进行检查,并且有时间手工检查?

2 个答案:

答案 0 :(得分:1)

您可以查询WMI以查看Win32_QuickFixEngineering类,以查看所有已安装补丁的列表。找到这个特定补丁的代码如下:

Get-CimInstance -ClassName Win32_QuickFixEngineering | Where HotFixID -eq KB3000483

现在,如果你想查询一大群计算机,我会使用这样的代码:

'localhost','offline' | ForEach {

    try {$a=Get-CimInstance -ClassName Win32_QuickFixEngineering  -ErrorAction Stop -ComputerName $_ | Where HotFixID -eq KB3000483 | Select HotFixID,InstalledOn,@{Name='Status';Exp={'Installed'}},@{Name='SystemName';Exp={$_.CSName}} }
   catch{$a= [pscustomobject]@{HotFixID="NA";InstalledOn='NA';Status='Not Installed';SystemName=$_}}
 finally{[pscustomobject]@{HotFixID=$a.HotFixID;InstalledOn=$a.InstalledOn;Status=$a.Status;SystemName=$a.SystemName} }

   }

结果?

HotFixID                         InstalledOn                      Status                           SystemName                      
--------                         -----------                      ------                           ----------                      
KB3000483                        2/14/2015 12:00:00 AM            Installed                        BEHEMOTH                        
NA                               NA                               Not Installed                                                    

因此,要在整个环境中运行此功能,只需使用Get-AdComputer -LdapFilter...等查询替换我的本地主机'离线'等等,或者从CSV或文本文件。

现在,如果您对Try $ a / Catch $ a行感到好奇,我们在这里做的是使用Try / Catch / Finally来尝试一些代码,如果遇到错误,我们会使用而是阻止块。我们将两者的示例存储在$ a中,以便我们可以在finally {}块中将它们拉出来以获得一些很好的标准化输出。如果我们遇到一个没有补丁或离线的系统,则会执行Catch {}块。

希望这能让你开始!

答案 1 :(得分:0)

您可以使用Systeminfo查看已安装的所有修补程序 例如,当我使用命令systeminfo时,我得到

Hotfix(s):                 255 Hotfix(s) Installed.

以及关于windows的很多信息,比如'last boot!' 并且要在域中的所有客户端中运行此命令,您可以在启动时使用gpo并为所有客户端设置组策略运行脚本, 在所有机器上运行命令的另一种方法你希望你可以使用“Invoke-Command” 语法很简单,如:

$command = { Get-EventLog -log "Windows PowerShell" | where {$_.Message -like "*certificate*"} }
Invoke-Command -ComputerName S1, S2 -ScriptBlock $command

您可以在所有电脑中添加[-Credential]进行身份验证 另一种方法是在系统中心控制的所有机器中使用系统中心运行命令 此致