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オブジェクトです。文字列操作に頼ることなく、値を直接取得できます。ビルド部分があなたのものである場合;探しているもの:

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 に答える