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:\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)的更多相关文章
- 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 ...
- 在Windows Server 2008 R2上安装IIS服务
一.Windows Server 2008 R2 介绍 1.Windows Server 2008 R2 基本概念 2.Windows Server 2008 R2 家族系列 二.VMware虚拟机安 ...
- Windows Server 2008 R2之一活动目录服务部署
测试环境: 服务器:计算机名Win2008R2CNDC,已安装Windows Server 2008 R2.IPV4:192.168.1.13,255.255.255.0,网关地址192.168.1. ...
- SQLite 在Windows Server 2008 R2 部署问题FAQ汇总[轉]
轉自:http://www.steveluo.name/sqlite-windows-server-2008-r2-deploy-faq/ 今天花了一天的时间研究了一下SQLite,以取代一些轻量级项 ...
- windows server 2008 R2 Enterprise 间实时同步之FreeFileSync 部署过程
WindowsServer间实时同步之FreeFileSync 部署过程 1. 实验主机信息 IP 操作系统 源目录 目标目录 10.155.0.80 Windows Server 2008 R2 D ...
- windows server 2008 R2域中的DC部署 分类: AD域 Windows服务 2015-06-06 21:09 68人阅读 评论(0) 收藏
整个晚上脑子都有点呆滞,想起申请注册好的博客还从来都不曾打理,上来添添生机.从哪里讲起呢,去年有那么一段时间整个人就陷在域里拔不出来,于是整理了一些文档,害怕自己糊里糊涂的脑子将这些东西会在一觉醒来全 ...
- windows server 2008 R2中建立ftp站点
在windows server 2008 R2中建立ftp站点,要遵循以下步骤: (1) 开启IIS中的ftp服务: (2) 在IIS中建立ftp站点. 具体过程如下: (1) 开启IIS中的ftp服 ...
- Windows Server 2008 R2 部署服务
Windows Server 2008 R2 部署服务 部分参考: Windows Server 2008 R2 部署服务 - 马睿的技术博客 - 51CTO技术博客http://marui.blog ...
- 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环境下测试正常,在百度中查找相关解决方法,如修改配置文件等, ...
随机推荐
- Android Weekly Notes Issue #222
Android Weekly Issue #222 September 11th, 2016 Android Weekly Issue #222 ARTICLES & TUTORIALS Fo ...
- 用drawRect的方式实现一个尺子
用drawRect的方式实现了一个尺子选择器,demo在这里:https://github.com/Phelthas/LXMRulerView 效果如图: 如果不考虑复用的问题,我感觉最简单的实现 ...
- 自定义UITabBarController标签视图控制器
首先创建一个类,继承自UItabBarController 然后在.m文件中: 这里我有两个宏定义: #define WIDTH (myView.frame.size.width / 4) //我在写 ...
- Intellij idea 和android studio 代码给混淆
Intellij idea 和android studio 代码给混淆 一.指令说明-optimizationpasses 5 # 指定代码的压缩级别 -dontusemixedcaseclassna ...
- iOS xml文件的解析方式 XMLDictionary,GDataXMLNode,NSXMLParser
iOS9之后,默认网络请求是https,所有我们要设置一下网络安全,具体设置如下 1.第三方类库 XMLDictionary 下载地址: https://github.com/nicklockwood ...
- MySql索引总结
索引概念 B+树索引分为聚集索引和非聚集索引(辅助索引),但是两者的数据结构都和B+树一样,区别是存放的内容. 可以说数据库必须有索引,没有索引则检索过程变成了顺序查找,O(n)的时间复杂度几乎是不能 ...
- Hive安装(一)之环境配置
Hive Web Interface(HWI)简介:Hive自带了一个Web-GUI,功能不多,可用于效果展示,如果没有安装Hue的话,是个不错的选择. 由于hive-bin包中没有包含HWI的页面, ...
- TCP三次握手/四次挥手详解
一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能.包含以下四个层次: 1. 链路层,也称作数据链路层或者网络接口层,通常包括操作系统中的设备驱动程 ...
- getopt,getoptlong学习
getopt和getoptlong被用来解析命令行参数. 一.getopt #include <unistd.h> extern char *optarg; extern i ...
- 《WePayUI组件设计的秘密》——2016年第一届前端体验大会分享
本文是博主参加第一届前端体验大会 | 物勒工名做的分享<WePayUI组件设计的秘密>,内容主要分为2个部分: 一.浅析UI库/框架的未来 讨论的UI库或者框架,主要包含展示和交互的css ...