2

У меня есть скрипт с регулярным выражением powershell, и после обновления с Windows 7 до 10 он работает по-другому.

Regex:

if ($srv -match '^[0-9]{1,3}\.[0-9]{1,3}$'){$srv = "192.168.$srv"}

Ожидаемое:

Let's say that $srv="1.0"
result: 192.168.1.0

После того, как я обновил его до Windows 10, он просто обрезает ноль в конце.

Now result will be: 192.168.1
BUT! if $srv="1.01", the result will be 192.168.1.01

Я искал разницу в регулярных выражениях между версиями powershell, но ничего не нашел. Пожалуйста помоги :)

1 ответ1

0

Вы говорите, выход

$ srv = "1.0"; if ($ srv -match '^ [0-9] {1,3}\. [0-9] {1,3} $') {"192.168. $ srv"}

192.168.1.0

И если я правильно понимаю, когда вы используете

$ srv = $ args [0]; if ($ srv -match '^ [0-9] {1,3}\. [0-9] {1,3} $') {"192.168. $ srv"}

И передайте 1.0 в качестве аргумента, на выходе 192.168.1

Это возможно только в том случае, если ваш скрипт выводит это куда-то еще. Поскольку это не может быть из этого, if заявление.

Не могли бы вы внести следующие изменения в ваш скрипт и показать нам результат:

$ srv = $ args [0];
"srv = $ srv";
if ($ srv -match '^ [0-9] {1,3}\. [0-9] {1,3} $') {"Внутри IF: 192.168. $ srv"}

Спасибо

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .