我的一个应用程序(例如Microsoft.AspNetCore.StaticFiles
)在IIS中的网站下运行,在部署期间创建了app1
绑定。但是,当最近通过Power Shell脚本部署在同一网站下的另一个应用程序(例如https
)时,它删除了先前添加的app2
绑定并破坏了https
。
当我查看app1
的部署脚本时,我意识到有一个功能可以检查绑定是否已经存在-如果存在,只需调用app2
即可更新该绑定或创建一个绑定。这个想法对我来说很好-基本上是说创建特定于应用程序的绑定或更新(如果已存在)。但是不确定,为什么Set-ItemProperty
的{{1}}删除了Set-ItemProperty
的绑定(实际上是其他所有对象,例如http
,https
等)
下面是该部署脚本中的net.tcp
。
net.pipe
运行此功能只是删除IIS中已为网站配置的所有现有绑定
function
答案 0 :(得分:2)
之所以删除所有绑定,是因为它将传递给$Protocol
的所有内容都覆盖了Bindings
属性,该属性是 all 的集合该网站的绑定。
您应该使用IIS附带的WebAdministration
模块来代替通用cmdlet来执行此操作。它包含各种有用的cmdlet,包括Set-WebBinding
和New-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:'}