0

尝试在此 Exchange 命令上应用以下正则表达式时出现以下错误。

@(Get-ExchangeServer | Format-List AdminDisplayVersion) | % { [regex]::Match($_, "^\sVersion (\d+\.\d+(\.\d+)?)\s").Success }

该命令Get-ExchangeServer | Format-List AdminDisplayVersion返回以下内容:

[PS] C:\Windows\system32>Get-ExchangeServer | Format-List AdminDisplayVersion


AdminDisplayVersion : Version 14.0 (Build 442.3)

AdminDisplayVersion : Version 14.0 (Build 442.3)

当将正则表达式应用于它时,我得到了所有错误:

[PS] C:\Windows\system32>@(Get-ExchangeServer | Format-List AdminDisplayVersion) | % { [regex]::Match($_, "^\sVersion (\
d+\.\d+(\.\d+)?)\s").Success }
False
False
False
False
False
False

关于我做错了什么的任何指示?

4

3 回答 3

1

AdminDisplayVersion 是一个 Microsoft.Exchange.Data.ServerVersion 对象,它具有所有版本部分作为属性。您可以直接获取值,而无需求助于字符串操作。如果 Build 部分是您正在寻找的:

Get-ExchangeServer | Foreach-Object {$_.AdminDisplayVersion.Build}

基于以上内容,您可以创建如下查询:

Get-ExchangeServer | Where-Object {$_.AdminDisplayVersion.Build -eq 123}
于 2012-07-13T10:57:20.593 回答
0

您已将正则表达式限制为以“版本”( ^\sVersion) 开头。这是正确的一个:

% { [regex]::Match($_, "\sVersion (\d+\.\d+(\.\d+)?)\s").Success }

于 2012-07-13T10:55:55.207 回答
0

尝试改变你的模式:

"\sVersion (\d+\.\d+(\.\d+)?)\s"
于 2012-07-13T10:56:16.020 回答