利用PowerShell脚本部署IIS站点

    近期由于新上架一批Windows平台服务器,并加入负载均衡中使用,故每台服务器上的IIS部署一致,如果在每台服务器上去重复操作是一项很烦人的事儿,结合之前部署的puppet及mco在Puppet服务端将脚本和要用到的程序及文件部署到Files目录下 利用MCO直接推送到新上架的服务器中进行部署和并执行脚本,现就将其建立IIS站点部署这一部分脚本共享给大家,其中有什么不足之处,还请大牛们多多指教:

# ************************************************************
# *                                                          *
# *                 Powershell部署IIS脚本                    *
# *                                                          *
# ************************************************************
# 作者:网上管家婆运维工程师--Sanddy QQ:442405
# 日期:2014-06-02
#set-executionpolicy remotesigned
Import-Module WebAdministration  #导入IIS模块
# 建立IIS站点所用参数(修改以下参数可以建立不同的站点)
#################################################################################################
$sitePort = 80  #端口
$SiteName = "test"    #站点名
$SiteAppPools = $SiteName  #进程池名
$SiteAppPoolsModel = "Classic"  #进程池使用通道模式
$AppPoolType = "Network Service"        #指定应用程序池要使用的帐户标识(0 >Local Service 1 >Local System  2 >Network Service  3 >User 4 >ApplicationPoolIdentity)
$managedRuntimeVersion = "v4.0"  #.net版本
$WebSitePath = "D:\OM_WebSite\Test" #站点程序路径
$HostHeader1 = "test.test.com.cn"      #绑定站点域名
$HostHeader2 = "test.test.com"      #绑定站点域名
$defaultDocument = "Default.html"
$IISLogFile = "d:\LogFiles\$SiteName" #IIS日志路径
$net32Or64 = $true  #是否启用.net32模式

#################################################################################################
#创建IIS应用程序池
function BuildAppPool(){
    $AppPool = "iis:\AppPools\" + $SiteAppPools
    $existAppPool = Test-Path $AppPool
    if($existAppPool -eq $false){
        #创建应用程序池
        .$Env:windir\system32\inetsrv\appcmd.exe add apppool /name:$SiteAppPools /managedRuntimeVersion:$managedRuntimeVersion  /managedPipelineMode:$SiteAppPoolsModel
        #指定应用程序池要使用的帐户标识
        .$Env:windir\system32\inetsrv\appcmd.exe set config /section:applicationPools /[name="'$SiteAppPools'"].processModel.identityType:NetworkService
        #设置应用程序池使用.net版本
        .$Env:windir\system32\inetsrv\appcmd.exe add apppool /name:$SiteAppPools /managedRuntimeVersion:$managedRuntimeVersion  /managedPipelineMode:$SiteAppPoolsModel
        #限制进程使用内存上限为1.5G
        .$Env:windir\system32\inetsrv\appcmd.exe set config /section:applicationPools /[name="'$SiteAppPools'"].recycling.periodicRestart.privateMemory:1572864
        #指定进程固定回收时间
        .$Env:windir\system32\inetsrv\appcmd.exe set apppool /apppool.name: $SiteAppPools /recycling.periodicRestart.time:1.00:00:00
        #启用.net32模式
        .$Env:windir\system32\inetsrv\appcmd.exe set config /section:applicationPools /[name="'$SiteAppPools'"].enable32BitAppOnWin64:$net32Or64
        #是否自动启动
        .$Env:windir\system32\inetsrv\appcmd.exe set config /section:applicationPools /[name="'$SiteAppPools'"].autoStart:$true
    }
}

#创建IIS应用站点
function BuildSite(){
    $appSitePath = "iis:\sites\"+$SiteName
    $existweb = Test-Path $appSitePath
    if(!$existweb)
    {
        New-Website -name $SiteName -port $sitePort  -ApplicationPool $SiteAppPools -PhysicalPath $WebSitePath
        .$Env:windir\system32\inetsrv\appcmd.exe set site $SiteName /bindings:"http/*:80:$HostHeader1,http/*:80:$HostHeader2"
        .$Env:windir\system32\inetsrv\appcmd.exe set config /section:directoryBrowse /enabled:false    
    }
    else{
    echo "'$SiteName' is Already exists"
    }
}

#设置IIS日志记录路径
function CreatIISLogFile(){
    .$Env:windir\system32\inetsrv\appcmd.exe set site $SiteName "-logfile.directory:$IISLogFile"
}

#为F5设备创建ISPAI筛选器 
function CreatISP(){
    $x = [string](.$Env:windir\system32\inetsrv\appcmd.exe list config $SiteName /section:isapiFilters)
    if ($x -like "*F5XForwardedFor*"){
    echo "isapiFilters is Already exists"
    }
    else{
    .$Env:windir\system32\inetsrv\appcmd.exe unlock config $SiteName "-section:system.webServer/isapiFilters"
    .$Env:windir\system32\inetsrv\appcmd.exe set config $SiteName /section:isapiFilters /"+[name='F5XForwardedFor',path='$Env:windir\System32\F5XForwardedFor.dll',enabled='true']"
    }
}

function RunBuild(){
    BuildAppPool
    BuildSite    
    CreatIISLogFile
    CreatISP
    .$Env:windir\system32\inetsrv\appcmd.exe start site $SiteName
}
RunBuild


你可能感兴趣的:(windows,脚本,IIS,powershell,puppet)