Можно ли использовать оператор PowerShell -match для проверки строк версий? - PullRequest
0 голосов
/ 05 декабря 2018

Я хочу использовать PowerShell для проверки версии ОС.Сценарий выглядит так:

$a = "6.3.9600"
$a -match "6.0"

Я запускаю этот сценарий на ISE PowerShell, и этот сценарий возвращает $true.Почему?

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018

Что касается вашего конкретного случая использования при проверке строки версии, .NET предоставляет Version класс , который может быть полезен здесь.Вы можете создать экземпляр, подобный этому ...

$version = [Version] $a

... или вот так ...

$version = [Version]::Parse($a)

Существуют свойства для основной версии, вспомогательной версии, сборки,и ревизия ...

PS> $version

Major  Minor  Build  Revision
-----  -----  -----  --------
6      3      9600   -1

Затем вы можете выполнить такие тесты ...

PS> $version.Major -eq 6
True
PS> $version.Major -eq 6 -and $version.Minor -eq 3
True
PS> $version.Major -eq 6 -and $version.Minor -ge 3
True
PS> $version.Major -eq 6 -and $version.Minor -gt 3
False
0 голосов
/ 05 декабря 2018

powershell может использовать для этого ускоритель типа dotnet [version].он понимает номера версий, поэтому знает, что 6.0.9.1 меньше 6.0.11.1.вот демо ...

$FoundVersion = [version]'6.3.9600'
$WantedVersion = [version]'6.0'

'Is it greater or equal? = {0}' -f ($FoundVersion -ge $WantedVersion)
'Is it equal?            = {0}' -f ($FoundVersion -eq $WantedVersion)

вывод ...

Is it greater or equal? = True
Is it equal?            = False
0 голосов
/ 05 декабря 2018

PowerShell -match - это совпадение регулярного выражения, в котором точка . соответствует любому символу.Итак, для вашего кода:

$a = "6.3.9600"
$a -match "6.0"

Совпадение найдено, так как "600" 'соответствует' "6.0".

Если вы хотите найти конкретный период, вам нужно его избежать, заменив его на \.:

"600" -match "6.0"
True
"600" -match "6\.0"
False

$a = "6.3.9600"
$a -match "6\.0"
False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...