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:\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
}

PowerShell自动部署IIS站点(Windows Server 2008 R2)的更多相关文章

  1. Windows Server 2008 R2 + IIS 环境部署Asp.Net Core App

    Windows + IIS 环境部署Asp.Net Core App   环境:Windows Server 2012, IIS 8, Asp.Net Core 1.1. 不少人第一次在IIS中部署A ...

  2. 在Windows Server 2008 R2上安装IIS服务

    一.Windows Server 2008 R2 介绍 1.Windows Server 2008 R2 基本概念 2.Windows Server 2008 R2 家族系列 二.VMware虚拟机安 ...

  3. Windows Server 2008 R2之一活动目录服务部署

    测试环境: 服务器:计算机名Win2008R2CNDC,已安装Windows Server 2008 R2.IPV4:192.168.1.13,255.255.255.0,网关地址192.168.1. ...

  4. SQLite 在Windows Server 2008 R2 部署问题FAQ汇总[轉]

    轉自:http://www.steveluo.name/sqlite-windows-server-2008-r2-deploy-faq/ 今天花了一天的时间研究了一下SQLite,以取代一些轻量级项 ...

  5. windows server 2008 R2 Enterprise 间实时同步之FreeFileSync 部署过程

    WindowsServer间实时同步之FreeFileSync 部署过程 1. 实验主机信息 IP 操作系统 源目录 目标目录 10.155.0.80 Windows Server 2008 R2 D ...

  6. windows server 2008 R2域中的DC部署 分类: AD域 Windows服务 2015-06-06 21:09 68人阅读 评论(0) 收藏

    整个晚上脑子都有点呆滞,想起申请注册好的博客还从来都不曾打理,上来添添生机.从哪里讲起呢,去年有那么一段时间整个人就陷在域里拔不出来,于是整理了一些文档,害怕自己糊里糊涂的脑子将这些东西会在一觉醒来全 ...

  7. windows server 2008 R2中建立ftp站点

    在windows server 2008 R2中建立ftp站点,要遵循以下步骤: (1) 开启IIS中的ftp服务: (2) 在IIS中建立ftp站点. 具体过程如下: (1) 开启IIS中的ftp服 ...

  8. Windows Server 2008 R2 部署服务

    Windows Server 2008 R2 部署服务 部分参考: Windows Server 2008 R2 部署服务 - 马睿的技术博客 - 51CTO技术博客http://marui.blog ...

  9. Windows Server 2008 R2 IIS7.5 部署 MVC HTTP 404.0 Not Found 错误

    如图 在Windows Server 2008 R2 IIS7.5 部署 MVC HTTP 404.0 Not Found 错误,在Win7环境下测试正常,在百度中查找相关解决方法,如修改配置文件等, ...

随机推荐

  1. Oracle Sales Cloud:报告和分析(BIEE)小细节2——利用变量和过滤器传参(例如,根据提示展示不同部门的数据)

    在上一篇随笔中,我们建立了部门和子部门的双提示,并将部门和子部门做了关联.那么,本篇随笔我们重点介绍利用建好的双提示进行传参. 在操作之前,我们来看一个报告和分析的具体需求: [1] 两个有关联的提示 ...

  2. 离开Autodesk,开启新篇章

    我已经离开了Autodesk,开启新篇章.在过去7年多时间中,我先后支持Autodesk 基础设施相关产品的开发,包括MapGuide/AIMS,Map3D,Civil 3D,Infraworks等, ...

  3. 【译】Spring 4 基于TaskScheduler实现定时任务(注解)

    前言 译文链接:http://websystique.com/spring/spring-job-scheduling-with-scheduled-enablescheduling-annotati ...

  4. SqlServer表结构查询

    一.前言 近两天项目升级数据迁移,将老版本(sqlserver)的数据迁移到新版本(mysql)数据库,需要整理一个Excel表格出来,映射两个库之间的表格字段,示例如下: Mysql数据库查询表结构 ...

  5. mysql select日期格式

    mysql表中datatime类型存储为2016-01-10,C#直接select 后,在datatable里面看,变成01/10/2016,需要还原回去,使用select DATE_FORMAT(列 ...

  6. 被我们忽略的HttpSession线程安全问题

    1. 背景 最近在读<Java concurrency in practice>(Java并发实战),其中1.4节提到了Java web的线程安全问题时有如下一段话: Servlets a ...

  7. Hibernate的 Restrictions用法

    方法说明 方法 说明 Restrictions.eq = Restrictions.allEq 利用Map来进行多个等于的限制 Restrictions.gt > Restrictions.ge ...

  8. 如何实现可动态调整隐藏header的listview

    (转自:http://blog.sina.com.cn/s/blog_70b9730f01014sgm.html) 需求:根据某种需要,可能需要动态调整listview的页眉页脚,譬如将header作 ...

  9. MSBuild 编译 C# Solution

    Microsoft(R) 生成引擎版本 4.6.1055.0 [Microsoft .NET Framework 版本 4.0.30319.42000] 版权所有 (C) Microsoft Corp ...

  10. HDOJ 2393. Higher Math

    Higher Math Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...