я введите в Powershell, чтобы перечислить имена всех моих лазурных веб-приложений:Get-AzureRmWebApp: результаты фильтрации имеет неожиданное поведение
Get-AzureRmWebApp | % { $_.Name }
Он выводит:
coolum-exercise-web-app
practice-web-app
AzureSandbox
Но тогда Я хочу отфильтровать этот вывод на имени. Я набираю это:
Get-AzureRmWebApp | ? { $_.Name -like "coolum-exercise-web-app" } | % { $_.Name }
Ожидаю увидеть только один выход. Вместо этого я вижу
coolum-exercise-web-app
practice-web-app
AzureSandbox
Почему фильтр имени не применяется?
Если я использую параметр -Name
непосредственно на Get-AzureRmWebApp
это работает:
Get-AzureRmWebApp -Name "coolum-exercise-web-app" | % { %_.Name }
Выходы:
coolum-exercise-web-app
Но почему where-object
не применять фильтр, как ожидалось?
И вот какое-то действительно озадачивающее поведение: если вы скопируете
Get-AzureRmWebApp
в скобки, фильтр работает так, как вы ожидали.
(Get-AzureRmWebApp) | ? { $_.Name -like "coolum-exercise-web-app" } | % { $_.Name }
Выходы:
coolum-exercise-web-app
Может кто-нибудь объяснить такое поведение? Почему включение команды в скобки делает работу фильтрации?