Если начинать с чистой «области видимости» достаточно каждый раз, попробуйте следующее:
while (<loop_condition>)
{
& {
... 1000 lines of script
}
}
Каждый раз, когда вы выполняете «1000 строк сценария» выше, вы получаете новую область видимости, поэтому переменные, локальные для этой области, должны будут повторно инициализироваться. Если ваш скрипт устанавливает глобальные переменные или переменные скрипта, например $global:foo
или $script:bar
, тогда этот подход может не сработать (зависит от того, хотите ли вы, чтобы глобальные / скриптовые изменения сохранялись между циклами итераций или нет).
Следующий (по общему признанию придуманный пример) демонстрирует, как создание новой области может дать вам новый набор «локальных» переменных каждый раз в цикле:
PS> while (1) { $local += 10; Start-Sleep -milli 500; $local }
10
20
30
40
PS> while (1) { & {$local += 10; Start-Sleep -milli 500; $local} }
10
10
10
10
Если вам действительно нужно совершенно новое пространство выполнения (чистый список глобальных переменных и переменных скрипта), вы можете вместо этого запустить задание, которое будет каждый раз получать новый класс пространства запуска, но результат будет не таким хорошим :
while (<loop_condition>)
{
$job = Start-Job { <path to 1000 line script> }
Wait-Job $job
Receive-Job $job
}