我有一个包含 powershell 正则表达式的脚本,在从 Windows 7 升级到 10 后,它的工作方式有所不同。
正则表达式:
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
你说的输出
$srv = "1.0"; 如果 ($srv -match '^[0-9]{1,3}\.[0-9]{1,3}$') {"192.168.$srv"}
是192.168.1.0
如果我理解正确的话,当你使用
$srv = $args[0]; 如果 ($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"}
谢谢