Powershell无法获取成员输出



我正在尝试使用Regex从ProductName中取出KB数。我得到的只是一根空绳子。

gwmi -cl win32_reliabilityRecords -filter "sourcename = 'Microsoft-Windows-WindowsUpdateClient'" | 
select @{LABEL = 'KB#' ; EXPRESSION = {(Select-string -Pattern '{^"KB"/w*$}' -InputObject $_.ProductName)}}|fl

这可能只是我对.NET正则表达式实现的有限了解和理解,但您的模式似乎毫无意义,请改用b(KBd+)b

Select @{n="KB";e={(Select-string -Pattern 'b(KBd+)b' -InputObject $_.ProductName).Matches[0].Captures[0]}}

Select-String返回MatchInfo对象,而不是捕获的字符串本身。注意如何通过.Matches.Captures 访问实际匹配和捕获的文本

如果你只对数字感兴趣,而不是对整个字符串"KB????"感兴趣,你可以使用lookbacking跳过KB部分:

Select-String -Pattern '(?<=KB)(d+)b'

相关内容

  • 没有找到相关文章

最新更新