在Powershell函数中使用New-Website

时间:2013-12-16 20:19:09

标签: powershell iis-8

我有一个脚本,我在Windows 2008 R2上用来创建我们公司所做的小特性的网站。我在Windows 2012上使用此脚本时遇到问题,看来IP绑定就是问题所在。我们一直将我们的网站绑定到特定的IP而不是使用所有接口。

无论如何,这是一个功能的精简副本:

function New-TestWebSite
{
[CmdletBinding()]
param
(
    [Parameter(Mandatory=$True, 
               ValueFromPipeLine=$True,
               HelpMessage="WWW<webidentifier> app pool and website will be created")]
    [ValidateNotNull()]
    [string] $WebIdentifier,
    [string] $BindIP,
    [ValidateNotNull()]
    [int] $Port
)
BEGIN {}
PROCESS 
{
    $name     = "WWW$WebIdentifier"
    $path     = "F:\Websites\$name"

    New-WebAppPool -name $name

    #New-Website -name $name -port $port -ip $BindIP -PhysicalPath $path -ApplicationPool $name
    New-Website -name $name -port $port -ip 172.30.219.249 -PhysicalPath $path -ApplicationPool $name
}
END {}
}

评论的New-Website系列在Windows 2008 R2上运行良好,但在Windows 2012上不起作用。根据technet和get-help,new-website的ip参数是一个字符串,但传入一个字符串似乎不太上班。网站已创建但不可浏览(HTTP 400错误请求 - 无法找到网页)。未注释的新网站线路可以工作,但是很糟糕,因为它需要对IP进行硬编码,我希望避免使用。

有关如何处理此事的任何建议吗?

编辑12 / 18- 我在网站上尝试了New-WebsiteBinding,我之前通过传入IP添加了(因为它没有运行)。这些绑定也不起作用。我会尽可能在另一台服务器上尝试整个交易。

$ip = "172.30.219.149"
New-WebBinding -Name "WWW8183" -IPAddress $ip -Port 8192

这就是applicationhost.config中的样子。 WWW8184函数和WWW8183(所有绑定)都没有:

<site name="WWW8183" id="2" serverAutoStart="true">
            <application path="/" applicationPool="WWW8183">
                <virtualDirectory path="/" physicalPath="F:\Websites\WWW8183" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="172.30.219.149:8183:" />
                <binding protocol="http" bindingInformation="172.30.219.149:8192:" />
                <binding protocol="http" bindingInformation="172.30.219.149:8193:" />
            </bindings>
        </site>
        <site name="WWW8184" id="3" serverAutoStart="true">
            <application path="/" applicationPool="WWW8184">
                <virtualDirectory path="/" physicalPath="F:\Websites\WWW8184" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="172.30.219.249:8184:" />
            </bindings>
        </site>

防火墙上没有任何掉落。 IUSR在F:\上继承了RX。

我现在非常接近将所有界面放在网站上。我们确实使用netsh http add iplisten将IIS仅绑定到主IP。

netsh http show iplisten
IP addresses present in the IP listen list:
-------------------------------------------
    172.30.219.249

编辑 - 2013年12月19日 在另一台2012服务器上尝试了我的功能,结果相同。绑定似乎不起作用,直到我通过GUI添加另一个,并立即运行。

0 个答案:

没有答案