#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
— возможно, вы можете описать желаемую логику приглашения устно в своем вопросе. Также обратите внимание, что, если вы не упомянете конкретного пользователя, они не будут уведомлены о ваших последующих комментариях.