@L0ns

Почему не корректно работает вывод скрипта powersheel?

Добрый день.
Подскажите, что делаю не так? Есть небольшой скрипт для предоставления доступа к сетевым папкам, он разбит на несколько пунктов, один из них отрабатывает не корректно, если использовать вот такую конструкцию:
Write-Host ″Menu″ -BackgroundColor White -ForegroundColor Red
Write-Host ″1. Посмотреть права на папку″ -ForegroundColor Green
Write-Host ″2. Exit″ -ForegroundColor Green

while($true)
{
$choice = Read-Host ″Выберите пункт меню″

Switch($choice){

  1 {
        $path = "C:\Temp"
        (get-acl $path ).access | select IdentityReference, IsInherited, FileSystemRights
         
    }

  2 {Write-Host ″Exit″; return}
    default {Write-Host ″Wrong choice, try again.″ -ForegroundColor Red}
    }
}


То нормальный вывод я получаю только после третьего раза, сначала выводит пустую строку, потом выводит дублированные значения и третий раз вывод происходит нормально.


″Menu″
″1. Посмотреть права на папку″
″2. Exit″
″Выберите пункт меню″: 1

″Выберите пункт меню″: 1
IdentityReference IsInherited FileSystemRights
----------------- ----------- ----------------
BUILTIN\Администраторы True FullControl
NT AUTHORITY\СИСТЕМА True FullControl
BUILTIN\Пользователи True ReadAndExecute, Synchronize
NT AUTHORITY\Прошедшие проверку True Modify, Synchronize
NT AUTHORITY\Прошедшие проверку True -536805376
BUILTIN\Администраторы True FullControl
NT AUTHORITY\СИСТЕМА True FullControl
BUILTIN\Пользователи True ReadAndExecute, Synchronize
NT AUTHORITY\Прошедшие проверку True Modify, Synchronize
NT AUTHORITY\Прошедшие проверку True -536805376
″Выберите пункт меню″: 1
BUILTIN\Администраторы True FullControl
NT AUTHORITY\СИСТЕМА True FullControl
BUILTIN\Пользователи True ReadAndExecute, Synchronize
NT AUTHORITY\Прошедшие проверку True Modify, Synchronize
NT AUTHORITY\Прошедшие проверку True -536805376
″Выберите пункт меню″:


Может кто подскажет, как исправить ситуацию?
  • Вопрос задан
  • 58 просмотров
Решения вопроса 1
@MaxKozlov Куратор тега PowerShell
Это связано с особенностями работы Output
Простейший способ решить в вашем случае - добавить | Out-Host после select

если делаете интерактив, тогда всегда используйте ххх-Host коммандлеты,
дефолтный output смешивать с выводом в хост - как раз получать подобные глюки

И, да, форматирование кода жуткое. Не экономьте на переводах строк
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы