从String中提取版本号

时间:2015-12-10 14:05:08

标签: powershell

使用以下PowerShell命令

Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
  Select-Object DisplayName, DisplayVersion |
  Select-String 'Application Name'

我得到这样的输出:

@{DisplayName=Application Name; DisplayVersion=52.4.1521}

如果这是在Unix上,我可能会找出sedawk命令来提取版本号,但在Windows上我甚至不知道从哪里开始。如何将该版本号作为变量的值?

1 个答案:

答案 0 :(得分:2)

Get-ChildItem生成一个对象列表,因此您应该使用这些对象的属性。通过Where-Object对具有您要查找的显示名称的对象过滤列表,然后展开DisplayVersion属性:

$regpath = 'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall'
$version = Get-ItemProperty "$regpath\*" |
           Where-Object { $_.DisplayName -eq 'Application Name' } |
           Select-Object -Expand DisplayVersion

您还可以让过滤器与通配符进行部分匹配

... | Where-Object { $_.DisplayName -like '*partial name*' } | ...

或正则表达式

... | Where-Object { $_.DisplayName -match 'expression' } | ...