获取变量中的匹配字符串

时间:2018-06-25 06:06:27

标签: powershell

我正在尝试从变量中获取匹配的字符串。

例如,

$out = "Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\{F1E1501C-B95C-42E0-BFD4-757DF1B961D1}"

我需要"{ }"中的值。

1 个答案:

答案 0 :(得分:3)

您可以为此使用RegEx:

$out = "Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall{F1E1501C-B95C-42E0-BFD4-757DF1B961D1}"

$out -match "^.*{(?<guid>.*)}$" | Out-Null

然后您可以像这样访问值:

$matches.Guid

-match会产生一个布尔值,让您知道它是否成功。在这里,我通过将其发送到Out-Null来丢弃它,但是您可以使用它来决定是否应该进行处理,例如将其包装在if中:

if ($out -match "^.*{(?<guid>.*)}$")
{
   # Do something
}

请注意,您可以使用此处提到的模式更准确地匹配GUID:

RegEx for GUID