#arrays #powershell #enumeration
Вопрос:
ПРИМЕЧАНИЕ.Эти примеры кода предназначены для работы в консоли PowerShell, а НЕ в PowerShell ISE.
Почему это происходит в этом фрагменте кода
Фрагмент #1:
amp; {Get-NetAdapter; Write-Host 'Press any key to continue...'; $X = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown')}
результаты Get-NetAdapter
отображаются ПЕРЕД выполнением Write-Host
и ReadKey
выполняются, но в этом фрагменте кода
Фрагмент #2:
amp; {Get-SecretInfo; Write-Host 'Press any key to continue...'; $X = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown')}
Результаты Get-SecretInfo
отображаются ПОСЛЕ выполнения Write-Host
и ReadKey
выполняются?
У меня здесь 2 цели:
- Чтобы включить
Get-SecretInfo
отображение результатов до выполненияWrite-Host
иReadKey
- Чтобы понять, почему
Get-NetAdapter
иGet-SecretInfo
почему они ведут себя по-разному, даже если они оба возвращаютсяObject[]
?
Комментарии:
1. Измените
Get-SecretInfo
значение наGet-SecretInfo |Out-Default
— это заставит хост-приложение ждать, пока выходные данныеGet-SecretInfo
не будут записаны в пользовательский интерфейс хоста, прежде чем продолжить следующую операцию.2. Спасибо @MathiasR.Jessen за решение первого вопроса — устранение основной проблемы последовательности выполнения. Однако я все еще не могу понять, почему возникла такая ситуация. Из моего чтения
Out-Default
, иOut-Host
я думаю, что понимаю, чтоOut-Default
это поведение по умолчанию, и на самом деле оно перенаправляется наOut-Host
то, является ли представление табличным. В основе моей озабоченности лежит вопрос — еслиOut-Default
это значение по умолчанию, почему я должен его явно указывать?Get-SecretInfo
Сломан?3. Это, вероятно, часто задаваемые вопросы № 1. Подразумеваемое использование таблицы форматов задерживается по крайней мере для 2 объектов.