Задать вопрос
@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
″Выберите пункт меню″:


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

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

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

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

Похожие вопросы