Home >Operation and Maintenance >Windows Operation and Maintenance >Detailed code explanation of Windows Server 2008 R2 PowerShell automatic deployment of IIS site
1. Function description
1. Connect to the software source server to download .NET Framework 4.0, .NET Framework 4.5.
2. Detect and determine whether the current .NET Framework version is less than v4.0, and upgrade if it is less than v4.0.
3. Install the IIS component. After the installation is complete, delete the software and scripts.
When upgrading .NET Framework, first upgrade from 3.5 (you can install 3.5 directly by executing the command "Add-WindowsFeature As-Net-Framework"), and then upgrade to 4.0 and 4.5 in sequence.
2. Implementation
The source code is as follows:
# 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 }
The above is the detailed content of Detailed code explanation of Windows Server 2008 R2 PowerShell automatic deployment of IIS site. For more information, please follow other related articles on the PHP Chinese website!