Как выбрать привязку без заголовка узла, используя Get-WebBinding - PullRequest
0 голосов
/ 08 мая 2019

У меня есть следующие привязки:

enter image description here

Я могу выбрать привязку с заголовком узла api, например, так:

enter image description here

Однако я не могу выбрать привязку, у которой нет заголовка узла.Если я передам "" или $NUL, я все равно получу все привязки:

enter image description here

Одно из возможных решений, которое я нашел, - это отфильтроватьсписок с использованием Where-Object, например так:

enter image description here

Есть ли лучший способ сделать это, который получит привязку по умолчанию без заголовка узла иничего больше?Спасибо!

1 Ответ

1 голос
/ 09 мая 2019

Похоже, вы не можете явно использовать Get-WebBinding, чтобы получить просто тот, у которого нет заголовка хоста.

Get-WebBinding возвращает все привязки. Из документов наши единственные доступные параметры для фильтрации:

  • -Name - Мы уже используем, чтобы указать имя сайта
  • -IPAddress - N/ A в этом случае
  • -Port - действительно можно указать только 443, что не поможет
  • -Protocol - можно указать только https, что не поможет
  • -HostHeader - наша лучшая надежда - давайте исследуем.

Наш единственный вариант - использовать -HostHeader.Мы знаем, что он принимает тип string, поэтому мы можем попробовать все инструменты в нашем наборе инструментов:

Get-WebBinding -Name "Default Web Site" -HostHeader ""
Get-WebBinding -Name "Default Web Site" -HostHeader $null
Get-WebBinding -Name "Default Web Site" -HostHeader ([String]::Empty)
Get-WebBinding -Name "Default Web Site" -HostHeader "*"

Они возвращают все одинаковые записи:

protocol bindingInformation sslFlags
-------- ------------------ --------
https    *:443:api          1
https    *:443:api.cluster  1
https    *:443:             0

т.е. все они.Это имеет смысл, поскольку параметр -HostHeader представляет собой подстановочный фильтр .Мы можем только фильтровать записей, а не выбирать записей.Фильтр «Пустой» (т. Е. «», $null, [String]::Empty) - это то же самое, что и возврат всего (т. Е. Поэтому он возвращает то же самое, что и полный шаблон "*").

изменив фильтр на:

Get-WebBinding -Name "Default Web Site" -HostHeader "api*"

, который возвращает:

protocol bindingInformation sslFlags
-------- ------------------ --------
https    *:443:api          1
https    *:443:api.cluster  1

Полная противоположность того, что мы хотим.

Так как Get-WebBinding имеет только параметры фильтрациинам нужно объединить его с параметром выбора, например Where-Object.Поскольку sslflags является флагом «Требуется указание имени сервера», «лучшим» способом является выбор на основе bindingInformation:

Get-WebBinding -Name "Default Web Site" | Where-Object { $_.bindingInformation -eq '*:443:' }

Возвращая то, что мы хотим:

protocol bindingInformation sslFlags
-------- ------------------ --------
https    *:443:             0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...