Я нахожусь в процессе преобразования тысяч строк пакетного кода в PowerShell. Я использую регулярное выражение, чтобы помочь с этим процессом. Проблема в том, что часть кода:
$`$2
При замене он просто показывает $2
и не расширяет переменную. Я также использовал одинарные кавычки для второй части замены вместо экранирования переменных, тот же результат.
$origString = @'
IF /I "%OPERATINGSYSTEM:~0,6%"=="WIN864" SET CACHE_OS=WIN864
...many more lines of batch code
'@
$replacedString = $origString -replace "(IF /I `"%)(.+)(:.+%`"==`")(.+`")(.+)","if ( $`$2 -match `"^`$4 ) {`$5 }"
$replacedString