使用Powershell更新IIS中的主机头

使用Powershell更新IIS中的主机头,powershell,iis-7.5,Powershell,Iis 7.5,目标:使用powershell更新IIS7.5站点的现有主机头 问题:设置网络绑定需要我没有的站点名称。不过,我确实有这个头像 场景:我在IIS中有多个站点。其中一些文件有一个主机头,其中包含我想要更改的特定字符串 Site1 - site1.stuff.domain.net Site2 - site2.stuff.domain.net Site3 - site3.domain.net 我想更改标题中包含.stuff的所有站点 我正在使用getwebbinding获取所有站点及其绑定的列表。然

目标:使用powershell更新IIS7.5站点的现有主机头

问题
设置网络绑定
需要我没有的站点名称。不过,我确实有这个头像

场景:我在IIS中有多个站点。其中一些文件有一个主机头,其中包含我想要更改的特定字符串

Site1 - site1.stuff.domain.net
Site2 - site2.stuff.domain.net
Site3 - site3.domain.net
我想更改标题中包含
.stuff
的所有站点

我正在使用
getwebbinding
获取所有站点及其绑定的列表。然后我循环遍历它们,检查
bindingInformation
是否包含
.stuff
。我根据自己的喜好修改字符串,然后用

Set-WebBinding -HostHeader $originalHeader -SetProperty HostHeader -Value $newHeader
显然,要使用
Set WebBinding
,您必须拥有站点名称,这与
Get WebBinding
不同,后者允许您基于HostHeader获取绑定(
Get WebBinding-HostHeader$someValue
)。有没有一种方法可以使用
设置网络绑定
,而不指定站点的
名称
?有没有办法从
get WebBinding
获取站点名称?是否有
设置网络绑定的替代方案
?还是有更好的方法来做我想做的事?

试试看:

Get-WebBinding -HostHeader *.stuff.* | Foreach-Object{
    #$NewHeader = $_.bindingInformation -replace '\.stuff\.','.staff.'
    Set-WebConfigurationProperty -Filter $_.ItemXPath -PSPath IIS:\ -Name Bindings -Value @{protocol='http';bindingInformation=$NewHeader}
}

修改了Shay的答案以支持多个绑定

Get-WebBinding -HostHeader *.stuff.* | Foreach-Object{
    #$NewHeader = $_.bindingInformation -replace '\.stuff\.','.staff.'
    Set-WebConfigurationProperty -Filter ($_.ItemXPath + "/bindings/binding[@protocol='http' and @bindingInformation='" + $_.bindingInformation + "']") -PSPath IIS:\ -Name bindingInformation -Value $NewHeader
}

不幸的是,当每个站点有多个绑定时,这不起作用。在本例中,$\ ItemXPath属性值相同,因此实际上只保留最后一个绑定。