Значение пробоя Sentinel в цикле выполнения сценария Powershell?

#powershell #do-while #sysadmin #script #sentinel

Вопрос:

Я стажер, вот скрипт powershell, который продолжает циклически запрашивать имя пользователя пользователя и изменять значение по умолчанию, если это неправильно, я могу ввести «нет», но он просто продолжает работать, потому что цикл while заканчивается Да, как мне добавить значение прорыва sentinel в этот цикл?

 $Default = "accountName"
Do{
     $LoginName = //some script
     $user = Get user //some script
     $Default = "No"
     $Write-Host "  Display information   " //some script
     $confirmation = $( if($Target=(Read-Host "Is this the right account? [$Default]")){Target}else{$Default})
     $default = $LoginName
}
while ($confirmation -ne "YES")
 

Комментарии:

1. Внутри DO {} этого вы можете сделать if ($confirmation -eq 'break') { break } . Затем введите break , когда появится запрос на выход.

2. В вашем коде есть несколько синтаксических проблем, которые могут быть связаны с размещением артефактов. Однако изменение Target на $Target может решить проблему. Обратите внимание, что вы можете упростить инструкцию до $confirmation = Read-Host "Is this the right account? [No]"

3. хорошо, спасибо, я их проверю!

4. Будет if ($confirmation -eq 'break') { break } ли идти прямо в конце этого цикла выполнения или это должно быть где-то в другом месте? Петля так и не разорвалась. В итоге я случайно отключил временный заполнитель после попытки сломаться и нажатия кнопки «Нет».

5. Ваш код также сбивает с толку: сначала по умолчанию 'No' используется значение , а затем $LoginName — возможно, вы можете описать желаемую логику приглашения устно в своем вопросе. Также обратите внимание, что, если вы не упомянете конкретного пользователя, они не будут уведомлены о ваших последующих комментариях.