PowerShell 部署 IIS 网站程序

PowerShell 和 PowerShell ISE 区别

PowerShell本身是一种脚本语言,但我们习惯上说的Windows环境中的PowerShell,一般是指PowerShell的控制台(Console),类似于之前的命令提示符(Command Prompt)的概念

PowerShell ISE是的全称是PowerShell Integrated Scripting Environment,即PowerShell的集成脚本环境,是方便编写PowerShell脚本的一套内置的脚本编写环境

PowerShell 安装 IIS web 服务器

  • 打开 PowerShell

首先,我们点击系统左下角的PowerShell图标,进入命令行环境

  • 查看IIS是否安装

接下来,我们键入一行脚本来查看IIS是否安装过get-windowsfeature web*

Display Name                                            Name                       Install State
------------                                            ----                       -------------
[x] Web 服务器(IIS)                                     Web-Server                     Available
    [x ] Web 服务器                                      Web-WebServer                  Available
        [x ] 安全性                                      Web-Security                   Available
            [x ] 请求筛选                                Web-Filtering                  Available
            [ ] IIS 客户端证书映射身份验证              Web-Cert-Auth                  Available
            [ ] IP 和域限制                             Web-IP-Security                Available
            [ ] URL 授权                                Web-Url-Auth                   Available
            [ ] Windows 身份验证                        Web-Windows-Auth               Available
            [ ] 基本身份验证                            Web-Basic-Auth                 Available
            [ ] 集中式 SSL 证书支持                     Web-CertProvider               Available
            [ ] 客户端证书映射身份验证                  Web-Client-Auth                Available
            [ ] 摘要式身份验证                          Web-Digest-Auth                Available
        [x ] 常见 HTTP 功能                              Web-Common-Http                Available
            [x ] HTTP 错误                               Web-Http-Errors                Available
            [x ] 静态内容                                Web-Static-Content             Available
            [x ] 默认文档                                Web-Default-Doc                Available
            [x ] 目录浏览                                Web-Dir-Browsing               Available
            [ ] HTTP 重定向                             Web-Http-Redirect              Available
            [ ] WebDAV 发布                             Web-DAV-Publishing             Available
        [x ] 性能                                        Web-Performance                Available
            [x ] 静态内容压缩                            Web-Stat-Compression           Available
            [ ] 动态内容压缩                            Web-Dyn-Compression            Available
        [x ] 运行状况和诊断                              Web-Health                     Available
            [x ] HTTP 日志记录                           Web-Http-Logging               Available
            [ ] ODBC 日志记录                           Web-ODBC-Logging               Available
            [ ] 跟踪                                    Web-Http-Tracing               Available
            [ ] 请求监视器                              Web-Request-Monitor            Available
            [ ] 日志记录工具                            Web-Log-Libraries              Available
            [ ] 自定义日志                              Web-Custom-Logging             Available
        [ ] 应用程序开发                                Web-App-Dev                    Available
            [ ] .NET Extensibility 3.5                  Web-Net-Ext                    Available
            [ ] .NET Extensibility 4.6                  Web-Net-Ext45                  Available
            [ ] ASP                                     Web-ASP                        Available
            [ ] ASP.NET 3.5                             Web-Asp-Net                    Available
            [ ] ASP.NET 4.6                             Web-Asp-Net45                  Available
            [ ] CGI                                     Web-CGI                        Available
            [ ] ISAPI 扩展                              Web-ISAPI-Ext                  Available
            [ ] ISAPI 筛选器                            Web-ISAPI-Filter               Available
            [ ] WebSocket 协议                          Web-WebSockets                 Available
            [ ] 服务器端包含                            Web-Includes                   Available
            [ ] 应用程序初始化                          Web-AppInit                    Available
    [ ] FTP 服务器                                      Web-Ftp-Server                 Available
        [ ] FTP 服务                                    Web-Ftp-Service                Available
        [ ] FTP 扩展                                    Web-Ftp-Ext                    Available
    [ ] 管理工具                                        Web-Mgmt-Tools                 Available
        [ ] IIS 管理控制台                              Web-Mgmt-Console               Available
        [ ] IIS 6 管理兼容性                            Web-Mgmt-Compat                Available
            [ ] IIS 6 元数据库兼容性                    Web-Metabase                   Available
            [ ] IIS 6 WMI 兼容性                        Web-WMI                        Available
            [ ] IIS 6 管理控制台                        Web-Lgcy-Mgmt-Console          Available
            [ ] IIS 6 脚本工具                          Web-Lgcy-Scripting             Available
        [ ] IIS 管理脚本和工具                          Web-Scripting-Tools            Available
        [ ] 管理服务                                    Web-Mgmt-Service               Available
    [ ] Web 应用程序代理                                Web-Application-Proxy          Available
[ ] IIS 可承载 Web 核心                                 Web-WHC                        Available
[ ] WebDAV 重定向程序                                   WebDAV-Redirector              Available
  • 安装IIS功能
install-windowsfeature Web-Mgmt-Tools,Web-Ftp-Server,Web-App-Dev,Web-Server,Web-WHC,Web-Mgmt-Service,Web-Scripting-Tools,Web-Net-Ext,Web-Net-Ext45,Web-ASP,Web-Asp-Net,Web-Asp-Net45,Web-CGI,Web-ODBC-Logging,Web-Http-Tracing,Web-Http-Redirect,Web-Cert-Auth,Web-IP-Security,Web-Url-Auth,Web-Windows-Auth,Web-CertProvider,Web-Client-Auth,Web-Digest-Auth

注意:
安装Web-Server会顺带安装

[x] Web 服务器(IIS)                                     Web-Server                     Available
    [x ] Web 服务器                                      Web-WebServer                  Available
        [x ] 安全性                                      Web-Security                   Available
            [x ] 请求筛选                                Web-Filtering                  Available
        [x ] 常见 HTTP 功能                              Web-Common-Http                Available
            [x ] HTTP 错误                               Web-Http-Errors                Available
            [x ] 静态内容                                Web-Static-Content             Available
            [x ] 默认文档                                Web-Default-Doc                Available
            [x ] 目录浏览                                Web-Dir-Browsing               Available
        [x ] 性能                                        Web-Performance                Available
            [x ] 静态内容压缩                            Web-Stat-Compression           Available
        [x ] 运行状况和诊断                              Web-Health                     Available
            [x ] HTTP 日志记录                           Web-Http-Logging               Available

安装Web-App-Dev,不会在安装其他

安装Web-Ftp-Server会安装ftp服务,不会安装扩展

安装Web-Mgmt-Tools,会安装管理控制台,其他不会安装

修改 PowerShell 的策略

PowerShell默认的执行策略是 Restricted,在该策略下仅能运行单独的命令,不能运行脚本

修改策略

set-executionpolicy unrestricted

策略解析

RESTRICTED

默认执行策略为“Restricted”。 
- Windows 8、Windows Server 2012 和 Windows 8.1 中的默认执行策略。 
- 允许单独的命令,但不会运行脚本。
- 阻止所有脚本文件的运行,包括格式设置文件和配置文件 (.ps1xml)、模块脚本文件 (.psm1) 和 Windows PowerShell 配置文件 (.ps1)。 

ALLSIGNED

- 脚本可以运行。 
- 要求所有脚本和配置文件都由受信任的发布者签名,包括在本地计算机上编写的脚本。 
- 会在运行来自某类发布者(即你尚未归类为受信任或不受信任的发布者)的脚本之前提示你。 
- 存在运行已签名但却是恶意的脚本的风险

REMOTESIGNED

- 脚本可以运行。这是 Windows Server 2012 R2 中的默认执行策略。 
- 要求从 Internet 下载的脚本和配置文件(包括电子邮件和即时消息程序)具有受信任的发布者的数字签名。 
- 不要求你在本地计算机上编写的脚本(不是从 Internet 下载的)具有数字签名。 
- 如果脚本已被取消阻止(比如通过使用 Unblock-File cmdlet),则运行从 Internet 下载但未签名的脚本。 
- 存在运行来自 Internet 之外的源的未签名脚本和已签名但却是恶意的脚本的风险。

UNRESTRICTED

- 未签名的脚本可以运行。(这存在运行恶意脚本的风险。) 
- 在运行从 Internet 下载的脚本和配置文件之前提醒用户

BYPASS

- 不阻止任何内容,并且没有任何警告或提示。 
- 该执行策略旨在用于后述配置:在其中 Windows PowerShell 被内置于一个更大的应用程序中,或者在其中 Windows PowerShell 是具有其自己安全模式的程序的基础

UNDEFINED

- 当前作用域中未设置执行策略。 
- 如果所有作用域中的执行策略都是 Undefined,则有效的执行策略是 Restricted,它是默认执行策略。 
注意:在不区分通用命名约定 (UNC) 路径和 Internet 路径的系统上,可能不允许使用 RemoteSigned 执行策略运行由 UNC 路径标识的脚本

PowerShell创建目录

PowerShell命令创建目录

mkdir c:\test\

创建多个目录加-p参数

mkdir -p c:\hello\haha\

PowerShell下载文件

  • wget命令下载文件

wget在PowerShell中自带,我们可以使用wget命令在PowerShell中下载并保存文件

wget命令使用格式如下:

wget -Uri "url地址" -OutFile "文件保存的位置" 

也可以使用PowerShell自带命令下载文件

Invoke-WebRequest命令格式如下:

在下载过程中,程序是先读取至内存中的,全部读取完后再写入文件,在读取过程中,文件大小为0

Invoke-WebRequest -Uri "https://aka.ms/dotnetcore.2.0.0-windowshosting" -OutFile "DotNetCore.WindowsHosting.exe"

PowerShell运行.exe程序包

安装exe程序包

Start-Process "DotNetCore.WindowsHosting.exe" -Wait

后期需要解决的问题是如何使用命令跳过点击确认方式进行下一步

PowerShell安装 .net core环境

要在IIS中运行ASP.NetCore程序,首先要安装DotNetCore.WindowsHosting

公司开发网站程序基于 .net core 3.1版本环境运行,安装需要使用三个安装包。

现安装一个程序包,后期在补充另外两个程序包

  • 下载DotNetCore.WindowsHosting程序包
    Invoke-WebRequest -Uri "https://aka.ms/dotnetcore.2.0.0-windowshosting" -OutFile "DotNetCore.WindowsHosting.exe"
  • PowerShell命令安装DotNetCore.WindowsHosting
    Start-Process "DotNetCore.WindowsHosting.exe" -Wait
  • DotNetCore安装完成后需要重新启动IIS服务
    Invoke-Expression "net stop was /y"
    Invoke-Expression "net start w3svc"

解压程序包

利用windows 2016自带解压工具进行解压,重新打开PowerShell后需要重新导入该命令。

如果是同一个PowerShell窗口则不需要导入直接解压即可

::导入解压模块
Add-Type -assembly "system.io.compression.filesystem"
::对压缩包进行解压
[io.compression.zipfile]::ExtractToDirectory("C:\1.zip","c:\")

修改文件内容

程序部署包下载并解压后需要修改配置文件内容
PowerShell可以直接修改txt文件内容不需要将内容转化为字符串

(Get-Content C:\Users\Administrator\Desktop\appsetting.txt)  -replace "123456","12" | Set-Content C:\Users\Administrator\Desktop\appsetting.txt 

对于不是txt文本文件的,需要将其输出转化为字符串型然后在进行修改文件内容

(Get-Content C:\appsetting.conf | Out-String) -replace "900000000","hhahahha" | Set-Content C:\appsetting.conf

创建 IIS 程序

手动建立网站的时候会自动创建应用程序池,只需要设置应用程序池的相关属性就可以,但用PowerShell脚本新建网站的时候是不会自动创建应用程序池的,所以我们需要先创建好应用程序池,在创建网站的时候将其指向到新建的应用程序池

::导入IIS管理模块
Import-Module WebAdministration
::新建应用程序池
New-Item -path iis:\AppPools\ybhx.inroad.com
::更改应用程序池版本为4.0,默认为2.0
Set-ItemProperty iis:\AppPools\ybhx.inroad.com managedRuntimeVersion v4.0
::将程序池的.net设置为无托管版本
Set-ItemProperty -Path iis:\AppPools\ybhx.inroad.com -Name managedRuntimeVersion -Value ''
::新建站点ybhx.inroad.com,网站名为ybhx.inroad.com,路经为 d:\apidd,端口为80端口,程序池为ybhx.inroad.com
 New-Website -name ybhx.inroad.com -PhysicalPath "d:\apidd" -ApplicationPool ybhx.inroad.com -Port 80
::打开浏览器进行访问测试
Invoke-Expression "cmd.exe /C start http://localhost:8080"
THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录