Понимание поведения Powershell

#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 цели:

  1. Чтобы включить Get-SecretInfo отображение результатов до выполнения Write-Host и ReadKey
  2. Чтобы понять, почему 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 объектов.