【问题标题】:Adding Website and FTP into IIS 7 via script通过脚本将网站和 FTP 添加到 IIS 7
【发布时间】:2011-11-30 19:27:24
【问题描述】:

我们正在将 100 多个域移至新服务器。我创建了一个脚本,允许使用一个简单的 BAT 文件将网站条目和 FTP 条目添加到 IIS 7 中。我发现了几个使用 AppCmd ADD SITE 的教程,效果很好。通过运行 :: c:\scripts\createIIS.bat youdomainname.com 。任何反馈? - 它正在工作。

@Echo off
:: --------------------------------------------
:: Create IIS 7 Site Entry / FTP Site
:: --------------------------------------------

:: Get variable from command %1 Root Domain Name.
set rootDomainName = %1

:: This is the path to the Web Pages on the server.
set WebFile=C:\websites\

:: ADD NEW Directory
MKDIR %WebFile%%1

:: ADD IIS ENTRY
%windir%\system32\inetsrv\AppCmd ADD SITE /name:%1 /bindings:http/*:80:%1,http/*:80:www.%1 /physicalPath:C:\websites\%1

:: --------------------------------------------
:: CREATE FTP in IIS
:: --------------------------------------------
%windir%\system32\inetsrv\AppCmd add vdir /app.name:"Default FTP Site/" /path:/%1 /physicalPath:"%WebFile%%1"


echo New Directory Created:  %WebFile%%1
echo IIS Website Created:  %1  and  www.%1
echo FTP SITE Created:  %1
echo ...
echo ...
echo COMPLETED!
pause

【问题讨论】:

    标签: iis-7 batch-file appcmd


    【解决方案1】:

    很棒的剧本。尽管这不是一个真正的问题,但我对它进行了一些修改以进行批处理。

    首先,我创建了一个批处理文件,该文件读取要添加的网站文本文件,该文件引用您稍作修改的批处理文件以仅创建网站(不需要 FTP):

    @Echo off
    :: ---------------------------------------------------------------------------------------
    :: Create Batched IIS 7 Site Entries
    :: 
    ::   Usage: CreateIISEntry.bat [websitename.com] (no www.)
    :: 
    
    for /f %%X in (NewWebsiteEntries.txt) do CreateSingleIISEntry.bat %%X
    
    
    echo ...
    echo *** BATCH PROCESS HAS BEEN COMPLETED ***
    

    NewWebsiteEntries.txt 包含要创建的网站列表 - 每行一个(不包括 www.):

    site1.com
    site2.com
    site3.com
    

    最后,创建条目的批处理文件:

    @Echo off
    :: ---------------------------------------------------------------------------------------
    :: Create IIS 7 Site Entry
    :: 
    ::   Usage: CreateSingleIISEntry.bat [websitename.com] (no www.)
    :: ---------------------------------------------------------------------------------------
    
    :: Get variable from command %1 Root Domain Name.
    set rootDomainName = %1
    
    :: This is the path to the Web Pages on the server.
    set WebFile=C:\inetpub\wwwroot\
    
    :: ADD NEW Directory
    MKDIR %WebFile%%1
    echo New Directory Created:  %WebFile%%1
    
    xcopy C:\inetpub\wwwroot\NewWebsiteHolding\*.* %WebFile%%1
    
    :: ADD IIS ENTRY
    %windir%\system32\inetsrv\AppCmd ADD SITE /name:%1 /bindings:http/[YOUR IP ADDRESS OR *]:80:%1,http/[YOUR IP ADDRESS OR *]:80:www.%1 /physicalPath:%WebFile%%1
    echo IIS Website Created:  %1  and  www.%1
    
    #:: --------------------------------------------
    #:: CREATE FTP in IIS
    #:: --------------------------------------------
    #%windir%\system32\inetsrv\AppCmd add vdir /app.name:"Default FTP Site/" /path:/%1 /physicalPath:"%WebFile%%1"
    #
    #
    
    
    #echo FTP SITE Created:  %1
    echo ...
    echo ...
    echo New website added ========================= %1
    

    因为在我的例子中,并不是所有的新网站都会同时上线,我是一个默认的占位符网站,其内容被复制到新创建的网站目录中。

    这会将所有网站添加到默认应用程序池中。

    就是这样。

    【讨论】: