4

有没有办法使用 Release Management v12 创建一个包含主机头选项的网站?

我的目标是能够在单个服务器上托管多个站点,所有站点都绑定到具有不同主机头的端口 80。即http://project1.development.local/ , http://project2.development.local/

我可以使用 AppCmd.exe 的主机标头创建一个网站,但这需要管理权限。考虑过使用powershell,但会触发UAC提示。

目前,我必须手动创建服务器的网站以包含主机标头,并且我希望有一个完全自动化的发布过程。

蒂亚!

4

1 回答 1

4

它没有任何现成的东西,但幸运的是,我已经一起破解了一些东西来处理站点绑定:

param( 
$SiteName=$(throw "Site Name must be entered"), 
$HostHeader,
$IpAddress,
$Port,
$RemoveDefault=$(throw "You must specify true or false") 
) 


Import-Module WebAdministration 

try { 
  $bindingExists = (Get-WebBinding "$SiteName" -Port "$Port" -Protocol "http" -HostHeader "$HostHeader" -IPAddress "$IpAddress") 

  if (!$bindingExists) { 
      Write-host "Creating binding for $SiteName : Host header $HostHeader and IP Address $IpAddress" 
      New-WebBinding "$SiteName" -Port $Port -Protocol "http" -HostHeader "$HostHeader" -IPAddress "$IpAddress" 

  } 
  else { 
      Write-host "Site $SiteName already has binding for host header $HostHeader and IP Address $IpAddress" 
  } 

  if ($RemoveDefault -eq "true") { 
      $defaultBinding = Get-WebBinding "$SiteName" | where {$_.bindingInformation -eq "*:80:" } 
      if ($defaultBinding -ne $null) { 
          Write-Host "Default binding exists... removing." 
          $defaultBinding | Remove-WebBinding 
      } 
      else { 
          Write-Host "Default binding does not exist" 
      } 
  } 
} 
catch { 
  Write-host $_ 
  exit 1 
} 
exit 0 

您可以在 RM 中创建一个自定义工具来利用此脚本,只需将param块中指定的参数传递给它。

您永远不必使用 AppCmd.exe... 如果内置工具不能满足您的需求,WebAdministration PowerShell 模块应该能够执行其他所有操作。

于 2014-04-29T23:54:26.780 回答