HTTP的Set-ItemProperty删除IIS中网站的现有绑定

时间:2019-01-04 13:45:37

标签: powershell web iis

我的一个应用程序(例如Microsoft.AspNetCore.StaticFiles)在IIS中的网站下运行,在部署期间创建了app1绑定。但是,当最近通过Power Shell脚本部署在同一网站下的另一个应用程序(例如https)时,它删除了先前添加的app2绑定并破坏了https

当我查看app1的部署脚本时,我意识到有一个功能可以检查绑定是否已经存在-如果存在,只需调用app2即可更新该绑定或创建一个绑定。这个想法对我来说很好-基本上是说创建特定于应用程序的绑定或更新(如果已存在)。但是不确定,为什么Set-ItemProperty的{​​{1}}删除了Set-ItemProperty的绑定(实际上是其他所有对象,例如httphttps等)

下面是该部署脚本中的net.tcp

net.pipe

运行此功能只是删除IIS中已为网站配置的所有现有绑定

function

2 个答案:

答案 0 :(得分:2)

之所以删除所有绑定,是因为它将传递给$Protocol的所有内容都覆盖了Bindings属性,该属性是 all 的集合该网站的绑定。

您应该使用IIS附带的WebAdministration模块来代替通用cmdlet来执行此操作。它包含各种有用的cmdlet,包括Set-WebBindingNew-WebBinding。例如:

New-WebBinding -Name "TestMiddleTierSite" -IPAddress "*" -Port 81 -Protocol http

答案 1 :(得分:2)

虽然@boxdog的答案是正确的并且值得推荐:但是可以使用* -ItemProperty和IIS:PSDrive添加绑定。只是不使用 Set -ItemProperty,而是使用 New -ItemProperty向集合添加新属性:

New-ItemProperty 'IIS:\Sites\Default Web Site' -Name bindings -Value @{protocol='http'; bindingInformation='*:81:'}