Я думаю, что это ошибка, которая относится только к PowerShell Windows 5.1:
Переключатель -NoEnumerate
не работает, если ввод осуществляется через именованный аргумент -InputObject
:
Следующая функция возвращает False
:
Function Test {Write-Output -InputObject (,'Foo') -NoEnumerate}
(Test) -is [Array]
Пока эта функция возвращает True
:
Function Test {Write-Output (,'Foo') -NoEnumerate}
(Test) -is [Array]
PowerShell Windows
Name Value
---- -----
PSVersion 5.1.17134.858
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17134.858
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Проблема не отображается в PowerShell Core .
(обе функции возвращают True
)
Name Value
---- -----
PSVersion 6.2.0-preview.1
PSEdition Core
GitCommitId 6.2.0-preview.1
OS Microsoft Windows 10.0.17134
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
Есть примечание, хотяв описании командлета Write-Output
относительно переключателя -NoEnumeration
:
Примечание
Этот переключатель корректно работает только с PowerShellCore 6.2 и новее.В более старых версиях PowerShell Core коллекция все еще перечисляется даже с использованием этого переключателя.Поведение в PowerShell Core 6.2 соответствует Windows PowerShell.
(Если я правильно прочитал, я понимаю, что переключатель -NoEnumeration
должен работать только для PowerShell Windows)
Я сообщил о проблеме здесь в Windows PowerShell [UserVoice] как указано здесь сообществом PowerShell GitHub , но похоже на черную дыру ... (я уже сообщал о проблемах, но вряд ли получил ответ).
Вопросы:
Это действительно ошибка или я пропустилчто-то?
Если это ошибка, Windows PowerShell [UserVoice] все еще правильный адрес, чтобы сообщить о такой проблеме?