สร้างเว็บไซต์ใน IIS จาก powershell ด้วยการผูกหลายรายการ


8

ฉันพยายามที่จะทำให้สคริปต์ง่ายดังนั้นเว็บไซต์ของฉันสามารถเข้าถึงได้ทั้งเป็นและก็www.example.com example.comฉันจะส่งผ่านข้อโต้แย้งที่มีผลผูกพันได้อย่างไร

นี่คือสิ่งที่ฉันลอง:

$iisApp = New-Item $iisAppName -bindings @{protocol="http";bindingInformation="*:80:"+ $url + ",*:80:www." + $url} -physicalPath $directoryPath
$iisApp | Set-ItemProperty -Name "applicationPool" -Value $iisAppPoolName

คำตอบ:


7

ตัวเลือก bindingInformation คาดหวังว่าจะมีArray of entry (ซึ่งแต่ละอาร์เรย์จะต้องทราบด้วยตนเอง@) ไม่ใช่รายการที่คั่นด้วยเครื่องหมายจุลภาค

ตัวอย่าง - กำหนดอาร์เรย์ที่เหมาะสมของรายการก่อนแล้วกำหนดเป็นอาร์กิวเมนต์ bindingInformation:

$bindings = @(
   @{protocol="http";bindingInformation="*:80:" + $url},
   @{protocol="http";bindingInformation="*:80:www." + $url},
)

$iisApp = New-Item $iisAppName -bindings $bindings -physicalPath $directoryPath
$iisApp | Set-ItemProperty -Name "applicationPool" -Value $iisAppPoolName

อีกทางเลือกหนึ่งหลังจากสร้างไซต์คุณสามารถเพิ่มการเชื่อมเพิ่มเติมโดยใช้คำสั่งNew-WebBinding เช่น:

New-WebBinding -Name $iisAppName -IPAddress "*" -Port 80 -HostHeader "www.$url"

0

ฉันกำลังใช้สิ่งนี้เพื่ออัปเดตการเชื่อมโยงมันอาจช่วยให้ใครบางคนออกไปเพราะฉันต้องคิดออกเอง

$hostname =$env:COMPUTERNAME
$fqdn = $env:USERDNSDOMAIN
$Bindings = Get-WebBinding |Select -expandproperty bindinginformation
$websites = Get-Website
foreach ($website in $websites)
    {
    $siteName=$website.name
         foreach ($Binding in $Bindings)
                {
                $oldheader =($Binding -split ":")[-1]
                    if ($oldheader -eq "")
                        {
                         Set-WebBinding -Name $sitename -BindingInformation $Binding -PropertyName "HostHeader" -Value "$hostname.$fqdn" 
                        }
                }
     }

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.