ホームページ  >  記事  >  運用・保守  >  Windows Server 2008 R2 PowerShellによるIISサイトの自動展開の詳細コード説明

Windows Server 2008 R2 PowerShellによるIISサイトの自動展開の詳細コード説明

黄舟
黄舟オリジナル
2017-06-05 09:49:122667ブラウズ

1. 機能説明

1. ソフトウェアソースサーバーに接続し、.NET Framework 4.0、.NET Framework 4.5をダウンロードします。

2. 現在の .NET Framework のバージョンが v4.0 未満かどうかを検出して判断し、v4.0 未満の場合はアップグレードします。

3. IIS コンポーネントをインストールします。インストールが完了したら、ソフトウェアとスクリプトを削除します。

.NET Framework をアップグレードする場合は、まず 3.5 からアップグレードし (「Add-WindowsFeature As-Net-Framework」コマンドを実行して 3.5 を直接インストールできます)、次に 4.0 と 4.5 に順番にアップグレードします。

2. 実装

ソースコードは次のとおりです:

# eastmoney public tools# version: v1.0.2# create by XuHoo, 2016-9-27#try {
    Import-Module ServerManager -ErrorAction Stop
    Import-Module BitsTransfer -ErrorAction Stop
}
catch {
    Write-Warning "$_"; exit
}$packages_path = "D:\software"  # Packages storage directoryfunction 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:\SOFTWARE\Microsoft\NET Framework Setup\"
    if(!$isExists) {        return $false
    } else {        # Returns the current .NET Framework version
        $version = gci "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP" | 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_path\dotnet4.0.exe -ArgumentList "/quiet"
            Start-Process -Wait $packages_path\dotnet4.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:windir\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll"
    Set-Location "$env:windir\Microsoft.NET\Framework\v4.0.30319\"; .\aspnet_regiis.exe -i    if($is64bit) {        $isapiPath_64 = "$env:windir\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
        Set-Location "$env:windir\Microsoft.NET\Framework64\v4.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
}

以上がWindows Server 2008 R2 PowerShellによるIISサイトの自動展開の詳細コード説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。