Просто используйте
Out-File h:\text\$i.extension
Синтаксический анализ PowerShell порождает несколько очень странных проблем в крайних случаях, но в целом он разработан так, как вы ожидаете, что он будет работать в большинстве, если не во всех, распространенных случаях.случаи.
В вашем случае я бы, вероятно, решил проблему немного иначе:
Get-Content h:\test1\test.txt |
ForEach-Object { $i = 0 } {
Select-String H:\test2\*.txt -pattern $_ |
Format-List |
Out-File h:\text\$i.extension
$i ++
}
Первый блок для ForEach-Object
в этом случае запускается один раз в начале циклаи инициализирует переменную счетчика.Я склонен избегать явных циклических конструкций (таких как for (x; y; z)
или foreach (x in y)
) в пользу конвейерных решений.