Я думаю, что это ошибка, которая относится только к 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
:
Примечание
Этот переключатель корректно работает только с PowerShell Core 6.2 и новее. В более старых версиях PowerShell Core коллекция по-прежнему перечисляется даже при использовании этого переключателя. Поведение в PowerShell Core 6.2 соответствует Windows PowerShell.
(Если я правильно понял, я понимаю, что переключатель -NoEnumeration
должен работать только для PowerShell Windows)
Я сообщил о проблеме здесь в Windows PowerShell [UserVoice] в соответствии с инструкциями здесь от Сообщество PowerShell GitHub, но это похоже на черную дыру... (Я уже сообщал о проблемах, но почти не видел ответа).
Вопросы:
Это действительно ошибка или я что-то упустил?
Если это ошибка, то Windows PowerShell [UserVoice] по-прежнему является правильным адресом для сообщения о такой проблеме?
-InputObject
). - person iRon   schedule 11.07.2019