Я хочу создать вложенную функцию, которая будет выполнять некоторую обработку, и на основе этой обработки для продолжения может потребоваться ввод данных пользователем. Однако, когда я пытаюсь запустить свой код, он получает странный вывод.
Set-Variable -Name setme -Option AllScope
$setme = "not set"
$nestedfunction = {
Write-Output "inside the function `n"
$setme = Read-Host "Enter Something"
Write-Output "inside the function setme is: $setme `n"
}
Write-Output "Outisde call: $(&$nestedfunction)"
Write-Output "outside it is $setme"
Затем, когда я запускаю его, я получаю:
Enter Something: abc
Outisde call: inside the function
inside the function setme is: abc
outside it is not set
Независимо от того, как я вложил функцию, она все равно заканчивается вот так
Set-Variable -Name setme -Option AllScope
$setme = "not set"
$parentfunction = {
Write-Output "In parent `n"
$childfunction = {
Write-Output "inside the function `n"
$setme = Read-Host "Enter Something"
Write-Output "inside the function setme is: $setme `n"
}
Write-Output "Calling child function `n"
&$childfunction
}
Write-Output "Outisde call: $(&$parentfunction)"
Write-Output "outside it is $setme"
Enter Something: abc
Outisde call: In parent
Calling child function
inside the function
inside the function setme is: abc
outside it is not set
Конечная цель состоит в том, чтобы иметь возможность вызывать дочернюю функцию, чтобы она обрабатывала некоторые данные, и если эти данные являются недействительными, попросите пользователя повторно ввести данные. В моем реальном сценарии, в котором я хочу установить этот параметр, он даже не будет подтверждать вызовы Read-Host, а просто будет обходить их, выполняя все остальное. Кто-нибудь знает, чего мне не хватает?
Большое спасибо ~
спасибо @Рохин Сидхарт, который работал :)