需要仅对以下代码结果中的KBxxxx文章和剩余文本进行单独过滤

时间:2017-10-16 09:42:01

标签: powershell

$Session = New-Object -ComObject "Microsoft.Update.Session"
$Searcher = $Session.CreateUpdateSearcher()

$historyCount = $Searcher.GetTotalHistoryCount()

$a=$Searcher.QueryHistory(0, $historyCount) | Select-Object Title 

$a

请求您帮我仅过滤上述命令输出的KBxxxx,softwarenamelist

2 个答案:

答案 0 :(得分:0)

您可以在自己的代码末尾尝试此操作:

$arrayKb = @()

foreach($strKb in $a){
    $strKb -match "KB\d{7}"
    $kb = $Matches[0]

    $itemObject = New-Object System.Object
    $itemObject | Add-Member -type NoteProperty -Name "Kb" -Value $kb
    $itemObject | Add-Member -type NoteProperty -Name "Software" -Value $strKb
    $arrayKb += $itemObject
}

$arrayKb

答案 1 :(得分:0)

使用this RegEx从括号中捕获KB编号,然后使用Calculated Properties使其整齐:

$a = $Searcher.QueryHistory(0, $historyCount) | Select-Object @{Name="KB";Expression={[regex]::match($_.Title,'\(([^\)]+)\)').Groups[1].Value}},@{Name="Title";Expression={$_.Title}}