我有以下绑定:
我可以选择主机头为api的绑定,如下所示:
api
但是,我不能选择没有主机头的绑定。如果传入""或$NUL,我仍然得到所有绑定:
""
$NUL
我发现的一个可能的解决方案是使用Where-Object过滤列表,如下所示:
Where-Object
有没有更好的方法可以让我得到一个没有主机头的默认绑定?谢谢!
qvsjd97n1#
看起来确实不能显式使用Get-WebBinding来获取 * 仅仅 * 没有主机头的那个。Get-WebBinding返回所有绑定。From the docs,我们唯一可用的过滤参数是:
Get-WebBinding
-Name
-IPAddress
-Port
-Protocol
-HostHeader
我们唯一的选择是使用-HostHeader,我们知道它接受string类型,所以我们可以尝试工具箱中的所有工具:
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参数是一个 * wildcard Filter *。我们只能 * filter * 条目,而不能 * select * 条目。"Empty"过滤器(也就是""、$null、[String]::Empty)与返回所有内容相同(也就是说,这就是为什么它与完整通配符"*"返回相同的内容)。我们可以通过将过滤器更改为以下内容来证明这一点:
$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进行选择:
sslflags
bindingInformation
Get-WebBinding -Name "Default Web Site" | Where-Object { $_.bindingInformation -eq '*:443:' }
返回我们想要的:
protocol bindingInformation sslFlags -------- ------------------ -------- https *:443: 0
avwztpqn2#
我知道这是一个老线索,但为了其他人的利益,搜索和找到这个线索。(Get-WebBinding).BindingInformation | ? {$_ -like '*:'}
(Get-WebBinding).BindingInformation | ? {$_ -like '*:'}
2条答案
按热度按时间qvsjd97n1#
看起来确实不能显式使用
Get-WebBinding
来获取 * 仅仅 * 没有主机头的那个。Get-WebBinding
返回所有绑定。From the docs,我们唯一可用的过滤参数是:-Name
-我们已使用指定网站名称-IPAddress
-在这种情况下不适用-Port
-实际上只能指定443,这没有帮助-Protocol
-只能指定没有帮助的https-HostHeader
-我们最大的希望-让我们调查一下。我们唯一的选择是使用
-HostHeader
,我们知道它接受string
类型,所以我们可以尝试工具箱中的所有工具:它们返回所有相同的条目:
也就是所有的。这是有意义的,因为
-HostHeader
参数是一个 * wildcard Filter *。我们只能 * filter * 条目,而不能 * select * 条目。"Empty"过滤器(也就是""、$null
、[String]::Empty
)与返回所有内容相同(也就是说,这就是为什么它与完整通配符"*"
返回相同的内容)。我们可以通过将过滤器更改为以下内容来证明这一点:
该函数返回:
和我们想要的完全相反。
由于
Get-WebBinding
只有过滤参数,我们需要将其与Where-Object
这样的选择参数组合在一起。由于sslflags
是"要求服务器名称指示"的标志,因此"更好"的方法是基于bindingInformation
进行选择:返回我们想要的:
avwztpqn2#
我知道这是一个老线索,但为了其他人的利益,搜索和找到这个线索。
(Get-WebBinding).BindingInformation | ? {$_ -like '*:'}