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 StopImport-Module BitsTransfer -ErrorAction Stop
}
catch {Write-Warning "$_"; exit
}$packages_path = "D:\software"  # Packages storage directoryfunction Download() {$isExists = Test-Path $packages_pathif(!$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 customif($testConn) {Start-BitsTransfer $address/dotnet4.0.exe $packages_pathStart-BitsTransfer $address/dotnet4.5.exe $packages_pathreturn $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 pschildnamereturn $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 $truefor($i=0;$i -lt 2;$i++) {$response = CheckVersionif($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 $falsereturn $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 featuresforeach($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 -iif($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 = Updateif($chkUp_result) {Install; Registry} else {Write-Warning "Update .NET Framework error."}
}
catch {Write-Warning "$_"; exit
}
finally {Remove-Item $packages_path -RecurseRemove-Item $MyInvocation.MyCommand.Path -Force
}

转载于:https://www.cnblogs.com/XuHoo/p/5916974.html

PowerShell自动部署IIS站点(Windows Server 2008 R2)相关推荐

  1. Exchange Server 2010部署(一)部署Windows Server 2008 R2域控制器

    (一)部署企业中第一台Windows Server 2008 R2域控制器 一.DC网络属性的基本配置 1.服务器DC的IP地址一定要是静态的IP地址,虽然不一定需要配置默认网关,但是DNS服务器指向 ...

  2. 在线文档预览解决方案-Office Web Apps在Windows Server 2008 R2部署教程

    由于接触到的服务器一般安装较多的是Windows Server 2008 R2版本的服务器,在此记录一下部署过程中踩得坑 优势:可以同时支持pc端和手机端,支持文件类型包括 doc,ppt,xls,d ...

  3. 部署企业中第一台Windows Server 2008 R2域控制器

     部署企业中第一台Windows Server 2008 R2域控制器 前言 对于活动目录(AD)来讲,从Windows 2000到现在有非常多的文章在对其进行探讨,微软公司每推出一代新的Window ...

  4. 一键安装php环境 iis,Windows Server 2008(R2) 一键安装PHP环境(PHP5.3+FastCGI模式

    本文通过最简单快捷的方式,讲述从崭新的Windows Server 2008(R2),通过护卫神·PHP套件一键部署PHP运行环境的过程,十分简单. 套件包下载地址: //www.jb51.net/s ...

  5. Windows Server 2008 R2 活动目录服务部署 (一)

    测试环境: 硬件环境:IBM X3250M3 软件环境:wmware esxi 5.1.0 客户端:VMware vSphere Client 5.1.0 服务器:计算机名LMDC1,已安装Windo ...

  6. windows多个服务器之间共享文件夹,windows server 2008 R2 部署NFS,实现多台服务器间、客户端间的共享目录。...

    如何通过Windows Server 2008 R2建立NFS存储服务? 通过Windows Server 2008 R2,我们可以很容易地将其作为一台NFS存储服务器,得到一个NFS软存储,轻松解决 ...

  7. dell服务器r730老自动重启_Dell R730服务器安装windows server 2008 R2蓝屏问题

    前几天在dell R730服务器上安装windows server 2008 R2,安装过程蓝屏: 查询相关资料,13G服务器OS-driver比较新,其中不包含windows server 2008 ...

  8. 计算机组播相关服务,Windows Server 2008 R2 之十八WDS(部署服务)之二

    一.有关说明 1.捕获映像.一种将客户端计算机启动到的启动映像类型,用于以 .wim 文件形式捕获操作系统.必须首先创建捕获映像,然后才能创建自定义的安装映像.在使用捕获映像进行捕获之前,必须在待捕获 ...

  9. windows server 2008 r2 IIS PHP

    在Windows server 2008 r2 的IIS(7.5)中搭建PHP运行环境: 一:安装IIS服务器(没有装IIS) 1.我的电脑>>右键>>管理(Manage) 2 ...

  10. 注意: 如何解决Windows Server 2008 R2 EFI启动模式安装2019年8月更新KB4512486 KB4512506  KB4512514后自动进入修复模式,无法正常启动问题!!!

    2019.12月发现累积几个月的更新没有重启动, 重启动后BIOS模式也遇到启动自动进入恢复模式了,使用 dism.exe /image:c:\ /cleanup-image /revertpendi ...

最新文章

  1. 百面机器学习之模型评估
  2. EST:李芳柏团队揭示微生物介导的砷氧化耦合硝酸还原
  3. Scala传名参数(By-Name)
  4. 洛谷1006 传纸条
  5. ThreadLocal封装SimpleDateFormat
  6. Linux 命令之 unzip -- 解压缩文件
  7. java createstatement,createStatement参数说明
  8. C++ | Qt 获取局域网中存在的主机(IP以及主机名)
  9. nodejs版本更新问题:express不是内部或外部命令
  10. Controller中servletFileUpload.parseRequest(request)解析为空
  11. ipython tesseract_python使用Tesseract库识别验证
  12. 苹果小企业项目申请App Store Small Business Program
  13. 智能交通卡口和电子警察解决方案
  14. form-making爬坑笔记(jeecg项目替换表单设计器)
  15. unity LineRender结合多点触摸 实现拖拽 重复画线
  16. 如何成为优秀的UI设计师
  17. bmob php支付,GitHub - bmob/bmob-php-sdk: PHP SDK相关源码
  18. VSTO插件供WPS使用
  19. 使用PlayCanvas制作一个简单的小游戏(一)
  20. bias and variance在机器学习中的应用

热门文章

  1. python编写量化交易程序英语_Python量化交易开源框架:AmazingQuant
  2. opencv 梯度幅值_20、 OpenCV导数和梯度
  3. python设置字符串的格式_Python中的字符串格式
  4. chrome 模拟点击_详解爬虫模拟登陆的三种方法
  5. Kubernetes 小白学习笔记(21)--kubernetes的运维-管理Lable
  6. 用php解二元一次方程程序,编写一个程序,求二元一次方程组,编写一个程序,求二元一次方程组的解...
  7. python学习第七天--文件系统常用模块os,os.path,pickle
  8. bootstart讲义,不过忘了是哪个老师的了
  9. 二十五、JAVA多线程(三、线程同步)
  10. PHP JAVA BASE64 encode decode