Windows Server 2008 R2 PowerShell自动部署IIS站点的代码详解


本文摘自PHP中文网,作者黄舟,侵删。

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、实现

  源码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

# 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站点的代码详解的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

windows怎么显示文件后缀名

win32 sdk基础(四)之如何从零开始创建windows窗口的第二步

windows账号被锁定

windows中鼠标的拖放操作是指什么?

windows系统中管理系统资源的程序组是什么

windows xp怎么升级10

windows安装光盘是什么

windows10和windows7的区别是什么

win10更改的ip无法保存怎么办?

windows中桌面图标的排列方式可以通过什么设置

更多相关阅读请进入《PowerShell》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...