当前位置: 首页 > news >正文

PowerShell Deploy

安装
把此代码下载或通过git clone到本地

然后在目录下面以管理员方式运行Install.ps1

git clone https://github.com/ZEQP/ZEQP-PSDeploy.git
cd .\ZEQP-PSDeploy
.\Install.ps1
创建/关闭PSSession
#通过弹出框输入密码
$Credential = Get-Credential -UserName “Administrator” -Message “请输入部署服务器的用户名和密码”
#默认用HTTP-5985端口
$Session = New-PSSession -ComputerName 10.100.12.100 -Credential $Credential
#中间过程处理 TODO
#处理完成后关闭连接
Remove-PSSession -Session $Session
#直接创建PSSession
$Password = ConvertTo-SecureString “{PassWord}” -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential(“Administrator”, $Password)
##默认用HTTPS-5986端口
$SessionOption = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
$Session = New-PSSession -ComputerName 10.100.12.100 -Port 5986 -Credential $Credential -UseSSL -SessionOption $SessionOption
#中间过程处理 TODO
#处理完成后关闭连接
Remove-PSSession -Session $Session
自动编译然后发布到指定服务器IIS站点
示例为dotnet后端项目,实际支持任意言语项目,只用写特定语言的编译发布命令就行

Start-DeployIIS -SessionKaTeX parse error: Expected '}', got 'EOF' at end of input: …ck { param(o) dotnet publish -o $o -c “Debug” -f net8.0 --no-self-contained -v m --nologo /p:EnvironmentName=Test
} -OutputPath .\bin\publish\ -RemotePath “D:\Publish”
前端项目
示例为nodejs的项目用yarn编译,实际支持任意言语项目,只用写特定语言的编译发布命令就行

Start-DeployIIS -Session $Session -WebSiteName MyUIWebSite -WebSitePort 8081 -ScriptBlock {
yarn run build:test
} -OutputPath .\dist\ -RemotePath “D:\Publish”
自动编译然后发布为服务
Start-DeploySvc -SessionKaTeX parse error: Expected '}', got 'EOF' at end of input: …k { param(o) dotnet publish -o $o -c “Debug” -f net8.0 --no-self-contained -v m --nologo -p:EnvironmentName=Test
} -OutputPath .\bin\publish\ -RemotePath “D:\Publish”
直接部署文件
#直接把DeployFile目录复制到服务器Publish目录下面,实际路径为D:\Publish\DeployFile
Start-DeployFile -Session $Session -Path D:\DeployFile\ -RemotePath “D:\Publish” -Compress

#直接把DeployFile目录下所有文件复制到服务器D:\Publish\DeployFile目录下面
Start-DeployFile -Session $Session -Path D:\DeployFile* -RemotePath “D:\Publish\DeployFile” -Compress
示例
直接部署IIS站点
在目录下创建PowerShell脚本文件Deploy.ps1

$Credential = Get-Credential -UserName “Administrator” -Message “请输入部署服务器的用户名和密码”
$SessionOption = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
$Session = New-PSSession -ComputerName 10.100.12.100 -Port 5986 -Credential $Credential -UseSSL -SessionOption $SessionOption
Start-DeployIIS -SessionKaTeX parse error: Expected '}', got 'EOF' at end of input: …ck { param(o) dotnet publish -o $o -c “Release” -f net8.0 --no-self-contained --no-restore -v m --nologo /p:EnvironmentName=Production
} -OutputPath .\bin\publish\ -RemotePath “D:\Publish”
Remove-PSSession -Session $Session
直接部署Windows服务
在目录下创建PowerShell脚本文件Deploy.ps1

$Credential = Get-Credential -UserName “Administrator” -Message “请输入部署服务器的用户名和密码”
$SessionOption = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
$Session = New-PSSession -ComputerName 10.100.12.100 -Port 5986 -Credential $Credential -UseSSL -SessionOption $SessionOption
Start-DeploySvc -SessionKaTeX parse error: Expected '}', got 'EOF' at end of input: …k { param(o) dotnet publish -o $o -c “Release” -f net8.0 --no-self-contained --no-restore -v m --nologo -p:EnvironmentName=Production
} -OutputPath .\bin\publish\ -RemotePath “D:\Publish”
Remove-PSSession -Session $Session
批量部署多个服务
在目录下创建PowerShell脚本文件Deploy.ps1

$Credential = Get-Credential -UserName “Administrator” -Message “请输入部署服务器的用户名和密码”
$SessionOption = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
$Session = New-PSSession -ComputerName 10.100.12.100 -Port 5986 -Credential $Credential -UseSSL -SessionOption $SessionOption

#进入MyAPPWebSite目录下编译
Set-Location -Path $MyAPPWebSitePath
Start-DeployIIS -SessionKaTeX parse error: Expected '}', got 'EOF' at end of input: …ck { param(o) dotnet publish -o $o -c “Release” -f net8.0 --no-self-contained --no-restore -v m --nologo /p:EnvironmentName=Production
} -OutputPath .\bin\publish\ -RemotePath “D:\Publish”

#进入MyAPPService目录下编译
Set-Location -Path $MyAPPServicePath
Start-DeploySvc -SessionKaTeX parse error: Expected '}', got 'EOF' at end of input: …k { param(o) dotnet publish -o $o -c “Release” -f net8.0 --no-self-contained --no-restore -v m --nologo -p:EnvironmentName=Production
} -OutputPath .\bin\publish\ -RemotePath “D:\Publish”

Remove-PSSession -Session $Session
部署示例

方法描述
Start-DeployIIS
Start-DeployIIS 用于本地构建并自动部署到远程 IIS 网站,参数说明如下:

-Session :远程 PowerShell 会话对象,必须已打开并连接到目标服务器。脚本会在该会话中创建、停止、启动 IIS 站点并上传 ZIP 文件。
-ScriptBlock :本地构建脚本块,用于生成部署产物。ScriptBlock 内通常使用 param($o) 接收输出目录,并将构建结果写入 -OutputPath 指定的目录。
-OutputPath :本地输出目录。脚本会检查路径是否存在,不存在则创建,存在则清空目录后执行构建,并将输出文件压缩为 ZIP 包。
-WebSiteName :目标 IIS 网站名称。脚本会尝试查找该站点,若不存在则新建;部署时会将内容解压到远程目录中的同名子目录。
-WebSitePort :目标 IIS 网站端口,用于创建新站点时绑定端口。若站点已存在,则不会修改现有绑定。
-RemotePath :目标服务器的远程发布目录,默认值为 D:\Publish\。ZIP 文件会上传到此目录,然后在目标服务器上解压到 RemotePath\WebSiteName。
脚本执行流程:

检查并准备本地 OutputPath。
执行 ScriptBlock 生成部署文件。
压缩 OutputPath 内容为 ZIP。
上传 ZIP 到远程服务器 RemotePath。
查找或创建指定 WebSiteName 的 IIS 站点。
停止网站、清理旧文件、解压新文件,并重新启动网站。
Start-DeploySvc
Start-DeploySvc 用于本地构建并自动部署到远程 Windows 服务,参数说明如下:

-Session :远程 PowerShell 会话对象,必须已打开并连接到目标服务器。脚本会在该会话中创建、停止、启动服务并上传 ZIP 文件。
-ScriptBlock :本地构建脚本块,用于生成部署产物。ScriptBlock 内通常使用 param($o) 接收输出目录,并将构建结果写入 -OutputPath 指定的目录。
-OutputPath :本地输出目录。脚本会检查路径是否存在,不存在则创建,存在则清空目录后执行构建,并将输出文件压缩为 ZIP 包。
-ServiceName :目标 Windows 服务名称。脚本会尝试查找该服务,若不存在则新建;部署时会将内容解压到远程目录中的同名子目录。
-BinaryName :服务可执行文件名称及启动参数,例如 “Giant.DI.exe --environment Test”。该值用于创建服务时的 ImagePath。
-RemotePath :目标服务器的远程发布目录,默认值为 D:\Publish\。ZIP 文件会上传到此目录,然后在目标服务器上解压到 RemotePath\ServiceName。
脚本执行流程:

检查并准备本地 OutputPath。
执行 ScriptBlock 生成部署文件。
压缩 OutputPath 内容为 ZIP。
上传 ZIP 到远程服务器 RemotePath。
查找或创建指定 ServiceName 的 Windows 服务。
停止服务、清理旧文件、解压新文件,并重新启动服务。
Start-DeployFile
Start-DeployFile 用于将本地文件或目录直接发布到远程服务器,可选压缩上传并支持本地/远程前后置脚本,参数说明如下:

-Session :远程 PowerShell 会话对象,必须已打开并连接到目标服务器。该参数用于远程文件复制和执行远程脚本。
-Path :本地文件或目录路径。可以是目录、文件或通配符路径(例如 D:\Deploy

http://www.jsqmd.com/news/1239393/

相关文章:

  • Windows下Conda环境OpenSSL异常NOT_ENOUGH_DATA(_ssl.c:4194)导致HuggingFace、Datasets、PyTorch等SSL问题
  • 第三方合作机构的API接口数据审计怎么做?
  • 2026南通市CPPM报考机构怎么选?从资质到服务的核验指南 - 企智芯
  • Java 21 新特性:虚拟线程
  • AI电影摄影技术:从剧本到画面的全流程自动化
  • 深度学习赋能声学超材料逆向设计实践
  • 2026年7月最新百达翡丽天津西青大悦春风里维修保养服务电话 - 百达翡丽官方售后中心
  • 昆明东川区铜都街道亨得利**名表服务中心电话公示(2026年7月最新) - 亨得利官方
  • Python AI开发必备:5大核心库实战解析与优化技巧
  • C++装饰器模式详解:动态扩展对象功能的瑞士军刀
  • 欧米茄走快怎么办**售后维修服务**公示(2026年7月最新) - 欧米茄服务中心
  • C++回调函数:原理、实现与应用场景详解
  • 商城系统怎么选才能满足企业级需求?企业级服务的选型框架与决策流程
  • 开源社区团购系统:PHP+uniapp+Vue全栈实践
  • 企业入驻福州科技园成本构成全解析 附实用选择参考
  • 2026 年现阶段沙洋评价高的灰泥订制厂家哪个好,揭秘这抹泥土,装修小白也能学会的秘密 - 企业推荐官【认证官方】
  • 谷歌设计“Frozen v2”芯片,或提Gemini推理效率6至10倍,芯片战略现“双轨制”
  • 江诗丹顿**保养价格查询|完整电话与维修地址**信息公告(2026年7月最新) - 江诗丹顿服务中心
  • 10分钟掌握CXX:构建Rust与C++类型安全互操作桥梁
  • 2026 年新消息:项城口碑好的液氧储罐回收订制厂家哪家专业,别扔!这“高危”储罐的回收变现秘密 - 行业甄选官
  • C++内存管理:从静态内存到动态内存的全面解析
  • A*启发式批次选择:提升CNN训练效率的智能样本选择方法
  • Banana Pro模型在企业级Python图像渲染中的应用
  • 中懿游比同类游戏外包团队强在哪里
  • ThinkBook开发环境配置与SQL Server安装指南
  • Mac用户必备的Xshell替代方案与SSH工具评测
  • AI网站隐藏功能大全:提升效率的实用技巧
  • 2026年7月最新宝珀昆明恒隆广场维修保养服务电话 - 宝珀官方售后服务中心
  • 2026年7月最新格拉苏蒂深圳怀德万象汇维修保养服务电话 - 亨得利钟表维修中心
  • TI McASP中断与状态寄存器配置实战:嵌入式音频系统稳定传输指南