获取RSS的XML内容然后整形输出(Windows Patch)

$report = [pscustomobject]@{‘Date‘ = $null; ‘MSRC‘ = $null; ‘KB‘ = $null; ‘Severity‘ = $null; ‘Version‘ = $null; ‘Summary‘ = $null; ‘ThreatType‘ = $null}
$report | Export-Csv -Path E:\PatchReport.csv -Force -Encoding Unicode -Delimiter "`t"
$parttern = "[(]\d{7}[)]"  #获取title最右侧的KB号码,对于任意年份的补丁都通用
$parttern_title = "\b(Information Disclosure|Remote Code Execution|Elevation of Privilege|Security Feature Bypass|Cumulative Security Update|Security Update|Denial of Service|Tampering)\b"
$WebClient = New-Object System.Net.WebClient
$WebClient.Encoding=[System.Text.Encoding]::UTF8
$xml = [XML]($WebClient.DownloadString("https://technet.microsoft.com/en-us/security/rss/bulletin"))
$xml.rss.channel.item | foreach {
$msrc = $_.link.substring($_.link.length - 8, 8)
do {
$patchweb = $WebClient.DownloadString("https://technet.microsoft.com/en-us/library/security/$msrc")
} while (!$?)         #$?表示最后一条执行的命令所返回的结果是True还是False, 在这里是True
$result = [regex]::Match($patchweb, $parttern)
$kbnumbers = $result.value.Substring(1, 7) #KB
$cdata = $_.encoded.InnerText -replace "Severity Rating: ", "" -replace "Revision Note: ", "" -replace "Summary: ", "" -split "<br/>"
#发布日期+MS号+KB号+危险等级+版本+摘要信息+威胁类型
foreach ($kbnumber in $kbnumbers) {
$_.pubdate.substring(0,10) + "`t" + ($_.link).substring($_.link.length - 8, 8) + "`t" + $kbnumber + "`t" + $cdata[0] + "`t" + $cdata[1].Substring(0,4) + "`t" + $cdata[2] + "`t" + [regex]::Match($_.title, $parttern_title, ‘IgnoreCase‘)
}
} | Out-File -FilePath E:\PatchReport.csv -Append -Encoding unicode
时间: 2024-10-11 03:13:39

获取RSS的XML内容然后整形输出(Windows Patch)的相关文章

WPF Paragraph获取或修改文本内容

一.说明 Paragraph继承自Block,Block继承自TextElement,在TextElement中 // // 摘要: // 获取表示元素中内容末尾的 System.Windows.Documents.TextPointer. // // 返回结果: // 表示 System.Windows.Documents.TextElement 中内容末尾的 System.Windows.Documents.TextPointer. public TextPointer ContentEnd

C#正则表达式获取组名,按照组名输出匹配内容

最近写了个正则表达式匹配的工具,可以按照组名输出匹配内容,还是挺方便的,代码留存一下,以后用的话,直接copy了. Regex regex = new Regex(this.textBoxRegex.Text); Match result = regex.Match(this.textBoxText.Text); if (result.Success) { StringBuilder sb = new StringBuilder(); foreach (var groupName in rege

.NetCore获取json文件配置内容

.netcore中的数据配置及内容用了json文件代替了之前framework的xml文件,那么json中的数据该怎么获取呢?下面讲解json文件在.net core中的获取方法. 首先,新建一个.net core web应用程序,然后新建文件夹JsonFile,并在JsonFile文件夹中新建class.json文件. 右键class.json,将赋值到输出目录设置为:始终复制(非常重要). 然后在class.json中添加内容: { "ClassNum": "1"

dom4j解析Xml,dom4j解析带命名空间的Xml内容,dom4j解析xml为实体类

首先引入maven: <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>jaxen</groupId> <artifactId>jaxen</arti

Java学习之Xml系列五:SAX解析——搜索xml内容

本文对SAX解析进一步说明. 另外主要给利用SAX解析方法找到指定条件(如标签名称)的xml文档内容. 首先按需要介绍一下DefaultHandler. DefaultHandler类是SAX2事件处理程序的默认基类.它继承了EntityResolver.DTDHandler.ContentHandler和ErrorHandler这四个接口.包含这四个接口的所有方法,所以我们在编写事件处理程序时,可以不用直接实现这四个接口,而继承该类,然后重写我们需要的方法.(注意:ContentHandler

转 使用utl_http获取某个http页面内容

使用utl_http获取某个http页面内容 首先确认浏览器可以访问IE ,如果不能访问,vmware 查看 虚拟机 网络适配器 网络连接模式 为NATvmware 查看 编辑 虚拟网络编辑器 VMNET0 桥接模式 自动 SQL> select utl_http.request('http://www.SINA.com') from dual;select utl_http.request('http://www.SINA.com') from dual *ERROR at line 1:OR

javascript中innerHTML 获取或替换html内容

innerHTML 属性用于获取或替换 HTML 元素的内容,语法为Object.innerHTML其中1.Object是获取的元素对象,如通过document.getElementById("ID")获取的元素:2.注意书写,innerHTML区分大小写.我们通过id="light"获取<div> 元素,并将元素的内容输出和改变元素内容,代码如下: 1 <!DOCTYPE html> 2 <html> 3 <head>

C# Winform中执行post操作并获取返回的XML类型的数据

/// <summary> /// 返回指定日期的订单数据 /// </summary> /// <param name="StartDate">起始日期</param> /// <param name="EndDate">结束日期</param> /// <returns>DataTable</returns> public System.Data.DataTable

java 如何获取网页的动态内容,并解析网页内容

(笔记) 获取网页的动态内容参考 https://pastebin.com/raw/FePkm2kp Maven: <!--获取网页源码,包括动态内容--><dependency> <groupId>htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>1.14</version></dependency> 实现: WebClie