我具有以下绑定:
我可以选择具有主机头api
的绑定,如下所示:
但是,我无法选择没有主机头的绑定。如果我通过""
或$NUL
,我仍然可以获得所有绑定:
我发现一种可能的解决方案是使用Where-Object
过滤列表,如下所示:
是否有更好的方法来执行此操作,这将使我获得默认绑定而没有主机头,而没有其他任何东西?谢谢!
答案 0 :(得分:1)
您似乎真的无法显式地使用Get-WebBinding
来获得 just 一个没有主机头的文件。
Get-WebBinding
返回所有绑定。 From the docs,我们唯一可用于过滤的参数是:
-Name
-我们已经在用来指定网站名称-IPAddress
-在这种情况下不适用-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
参数是通配符过滤器。我们只能过滤 条目,而不能 select 条目。 “空”过滤器(即“”,$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