Aquí es un script de PowerShell que escribí hace poco que se puede adaptar a hacer lo que quiera:
# Updates IIS bindings across all sites by replacing all occurrences
# of $searchString for $replaceString in the binding host header.
# Note that the search and replace is case insensitive.
$searchString = "ovh-ws0"
$replaceString = "ovh-ws1"
foreach ($website in Get-Website) {
"Site: {0}" -f $website.name
$bindings = Get-WebBinding -Name $website.name
foreach ($binding in $website.bindings.Collection) {
$bindingInfo = $binding.bindingInformation
" Binding: {0}" -f $bindingInfo
if ($bindingInfo -imatch $searchString) {
$oldhost = $bindingInfo.Split(':')[-1]
$newhost = $oldhost -ireplace $searchString, $replaceString
" Updating host: {0} ---> {1}" -f $oldhost, $newhost
Set-WebBinding -Name $website.name -BindingInformation $bindingInfo -PropertyName "HostHeader" -Value $newhost
}
}
}
y esto es un ejemplo del resultado del script anterior:
Site: alpha
Binding: 100.101.102.103:80:alpha.redacted.com
Binding: 100.101.102.103:80:ovh-ws0-alpha.redacted.com
Updating host: ovh-ws0-alpha.redacted.com ---> ovh-ws1-alpha.redacted.com
Binding: 100.101.102.103:443:ovh-ws0-alpha.redacted.com
Updating host: ovh-ws0-alpha.redacted.com ---> ovh-ws1-alpha.redacted.com
Binding: 100.101.102.103:443:alpha.redacted.com
Site: beta
(etc)
Site: release
(etc)
Por supuesto, el script se puede adaptar para modificar enlaces de otras maneras. Por ejemplo, la siguiente secuencia de comandos actualizará las direcciones IP:
# Updates IIS bindings across all sites by replacing all IP addresses from $oldIP to $newIP.
$oldIP = "100.101.102.103"
$newIP = "*"
foreach ($website in Get-Website) {
"Site: {0}" -f $website.name
$bindings = Get-WebBinding -Name $website.name
foreach ($binding in $website.bindings.Collection) {
$bindingInfo = $binding.bindingInformation
" Binding: {0}" -f $bindingInfo
if ($bindingInfo -imatch $oldIP) {
" Updating IP: {0} ---> {1}" -f $oldIP, $newIP
Set-WebBinding -Name $website.name -BindingInformation $bindingInfo -PropertyName "IPAddress" -Value $newIP
}
}
}
No creo que esta solución es bastante buena ya que borrará todos los enlaces si tiene más de uno y acabo de dejar con la especificada. –
No estoy de acuerdo con que responda exactamente la pregunta, pero creo que es lo mejor que se puede hacer con PowerShell contra IIS. Lo que me gustaría ver es algo como '$ b = Get-WebBinding; $ b.SetAttribute ('Puerto', 9999); $ b.Guardar; 'pero eso no funciona. No puedo eliminar el downvote a menos que cambies la respuesta (!) ... raro. –
La solución Spoonfed se ha proporcionado en la respuesta mediante un cambio. Por favor revise su downvote. – JonnyG