zoukankan      html  css  js  c++  java
  • PowerShell自动部署IIS站点(Windows Server 2008 R2)

    1、功能描述

      1. 连接软件源服务器下载.NET Framework 4.0、.NET Framework 4.5。

      2. 检测并判断当前.NET Framework版本是否小于v4.0,如果小于则进行升级。

      3. 安装IIS组件,安装完成后删除软件及脚本。

      在升级.NET Framework时,是先从3.5升级(可以通过执行命令"Add-WindowsFeature As-Net-Framework"直接安装3.5),然后依次升级4.0、4.5。

    2、实现

      源码如下:

    try {
        Import-Module ServerManager -ErrorAction Stop
        Import-Module BitsTransfer -ErrorAction Stop
    }
    catch {
        Write-Warning "$_"; exit
    }
    
    $packages_path = "D:software"  # Packages storage directory
    
    function Download() {
        $isExists = Test-Path $packages_path
        if(!$isExists) {
            New-Item -ItemType Directory $packages_path
        }
        # instantiate a socket object,
        # Try connect to download the source
        $testConn = New-Object Net.Sockets.TcpClient
        $testConn.Connect("$address", 80)  # $address need to custom
        if($testConn) {
            Start-BitsTransfer $address/dotnet4.0.exe $packages_path
            Start-BitsTransfer $address/dotnet4.5.exe $packages_path
            return $true
        } else {
            return $false
        }
    }
    
    function CheckVersion {
        # To detect the .NET Framework whether exists in the registry
        $isExists = Test-Path "HKLM:SOFTWAREMicrosoftNET Framework Setup"
        if(!$isExists) {
            return $false
        } else {
            # Returns the current .NET Framework version
            $version = gci "HKLM:SOFTWAREMicrosoftNET Framework SetupNDP" | sort pschildname -desc | select -fi 1 -exp pschildname
            return $version
        }
    }
    
    function Update {
        Add-WindowsFeature As-Net-Framework  # Update .NET Framework 3.5
        # The first cycle:
        #   Perfrom CheckVersion function, returns the value assigned to $response
        #   If $response < 4.0, start install dotnet 4.0 and dotnet 4.5
        #   Enter the second loop
        # The second cycle:
        #   Again to perfrom CheckVersion function
        #   If the installation is successful,
        #   the value of variable $response at this time will be greater than 4.0,
        #   the output corrent .NET Framework version and returns $true
        for($i=0;$i -lt 2;$i++) {
            $response = CheckVersion
            if($response -lt "v4.0") {
                Start-Process -Wait $packages_pathdotnet4.0.exe -ArgumentList "/quiet"
                Start-Process -Wait $packages_pathdotnet4.5.exe -ArgumentList "/quiet"
            } else {
                Write-Host "DotNET current version is: $response"
                return $true
            }
        }
        # Above cycle without entering the return statement,
        # then .NET Framework update failed, this function will return the $false
        return $false
    }
    
    function Install {
        $features = Get-WindowsFeature Web-Server,Web-Static-Content,Web-Default-Doc,Web-Http-Errors,Web-Http-Redirect,Web-Asp-Net,Web-Net-Ext,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Http-Logging,Web-Request-Monitor,Web-Filtering,Web-IP-Security,Web-Stat-Compression,Web-Mgmt-Console,Web-WHC
        # Install IIS features
        foreach($item in $features) {
            Add-WindowsFeature $item
        }
        Remove-WindowsFeature Web-Dir-Browsing  # Delete "Web-Dir-Browsing" function
    }
    
    function Registry {
        $is64bit = [IntPtr]::Size -eq 8  # To determine whether a system is 64-bit
        $isapiPath_32 = "$env:windirMicrosoft.NETFrameworkv4.0.30319aspnet_isapi.dll"
        Set-Location "$env:windirMicrosoft.NETFrameworkv4.0.30319"; .aspnet_regiis.exe -i
        if($is64bit) {
            $isapiPath_64 = "$env:windirMicrosoft.NETFramework64v4.0.30319aspnet_isapi.dll"
            Set-Location "$env:windirMicrosoft.NETFramework64v4.0.30319"; .aspnet_regiis.exe -i
        }
    }
    
    try {
        $chkGet_result = Download
        $chkUp_result = Update
        if($chkUp_result) {
            Install; Registry
        } else {
            Write-Warning "Update .NET Framework error."
        }
    }
    catch {
        Write-Warning "$_"; exit
    }
    finally {
        Remove-Item $packages_path -Recurse
        Remove-Item $MyInvocation.MyCommand.Path -Force
    }
  • 相关阅读:
    修复 Visual Studio Error “No exports were found that match the constraint”
    RabbitMQ Config
    Entity Framework Extended Library
    Navisworks API 简单二次开发 (自定义工具条)
    NavisWorks Api 简单使用与Gantt
    SQL SERVER 竖表变成横表
    SQL SERVER 多数据导入
    Devexpress GridControl.Export
    mongo DB for C#
    Devexress XPO xpPageSelector 使用
  • 原文地址:https://www.cnblogs.com/XuHoo/p/5916974.html
Copyright © 2011-2022 走看看