您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
Powershell实践Discuz!NT自动打包发布
惜霜2025-07-06Discuz教程已有人查阅
导读最近喜欢上了Powershell,由于本人向来懒惰,遂将日常工作中一些琐碎的,重复的事情用powershell来做了。为此某不才,读了PowerShell自带的
最近喜欢上了Powershell,由于本人向来懒惰,遂将日常工作中一些琐碎的,重复的事情用powershell来做了。为此某不才,读了PowerShell自带的《GettingStarted》和《UserGuide》,基本的东西也就差不多了。在实践的过程中也曾被一些小问题卡住,在ps自带的文档中没有发现解决办法。幸而得到高人相助,一句话道破天机。(悄悄说:这位高人最近酝酿一件关于ps的作品)
废话少说,上代码:
闲言碎语:不才初步体验了PowerShell一下,感觉很不错哦,像粘合剂一样把一些小工具,WMI.NetFramework等联系起来组成超级强大的武器。语法么还是稍稍感觉有些怪,不太舒服,不过习惯就好了。另外如果VS能支持PowerShell就好了,感觉PowerShellPlus用起来还是稍稍不爽。自从写了这个脚本,一切只需轻轻的点一下鼠标,真个过程就自动ok了(过程:svncheckout->MSBuild编译解决方案->上传到FTP服务器)。当然结合前天代震军同学翻译的文章
废话少说,上代码:
#dnt_publish.ps1Create by 2024年12月23日13:05:22
#环境变量
Set-Location -path E:\publish
. .\functions.ps1 #引入外部文件,相当于include
$Src = "E:\source\dnt\3"
$SetupPublishTo = "E:\publish\pub_dnt26"
$SourcePublishTo = "E:\publish\source\dnt26"
$ZipSetupFileName = ".\dnt_26_n2.zip"
$ZipSourceFileName = ".\dnt26_n2_src"
$ExcludeFile = get-content -path .\ExcludeFile.txt
$ExcludeDir = get-content -path .\ExcludeDir.txt
$IsZipSetup=Read-Host("是否生成安装包?[y\n]")
$IsZipSource=Read-Host("是否生成源码包?[y\n]")
$IsUploadSetupToDntWebServer=Read-Host("是否上传安装包到nt官方?[y\n]")
$IsUploadSetupToDownloadServer=Read-Host("是否上传安装包到下载服务器?[y\n]")
$IsUploadSourceToDownloadServer=Read-Host("是否上传源码包到下载服务器?[y\n]")
#SVN更新
svn up $Src
#编译解决方案
C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe $Src\Discuz_vs08.sln /t:Build /v:m /fileLoggerParameters:LogFile=MyLog.log;
#生成模板
#处理安装包
if ($IsZipSetup -eq "y")#如果变量IsZipSetup=="y"
{
#复制及清理文件
robocopy $Src\Discuz.Web $SetupPublishTo\upload_files /E /XF $ExcludeFile /XD $ExcludeDir /MIR
.\clear.bat #在这个bat中进行了一些清理文件的操作
#开始压缩
wzzip $ZipSetupFileName $SetupPublishTo -r -p #调用winzip的命令行 生成压缩包,参数说明请google
}
#处理源代码包 ,ExportDNTSource 是戏水自己写的function
if ($IsZipSource -eq "y")
{
ExportDNTSource 'https://svn.bugaosuni.com/dnt' E:\publish\source\dnt26
wzzip $ZipSourceFileName $SourcePublishTo -r -p
}
#是否发布到nt.discuz.net
if ($IsUploadSetupToDntWebServer -eq "y")
{
#Write-Host "UploadSetupToDntWebServer $IsUploadSetupToDntWebServer"
UploadSetupToDntWebServer
}
#是否发布到download.comsenz.com
if ($IsUploadSetupToDownloadServer -eq "y")
{
#Write-Host "UploadSetupToDownloadServer $IsUploadSetupToDownloadServer"
UploadToDownloadServer $ZipSetupFileName "2.6"
}
if ($IsUploadSourceToDownloadServer -eq "y")
{
UploadToDownloadServer $ZipSourceFileName "src"
}
下面是一些功能函数:
#function.ps1 Create by 戏 水2008年12月23日 13:16:43 zjneter.cnblogs.com
#上传ftp
function global:Upload
{
#param定义函数接受的参数,可以指定默认值
param([string]$h, [string]$u, [string]$p,[string]$f,[string]$cd="\")
$cmd = "open $h
user $u $p
binary
cd $cd
put $f"
$cmd | ftp -n
}
function UploadSetupToDntWebServer
{
Write-Host -foregroundcolor green "开始ftp上传到官方网站"
Upload -h 221.194.139.228 -u nicai -p !@#$%^&*() -f $ZipSetupFileName
if ($?)
{
Write-Host -foregroundcolor green "上传到官方网站成功!"
}
else
{
Write-Host -foregroundcolor red "上传到官方网站失败!"
}
#$?变量表示之后一个操作成功与否,成功返回true
}
function UploadToDownloadServer
{
param([string]$filename,[string]$cd)
Write-Host -foregroundcolor green "开始ftp上传到下载服务器"
Upload -h download.comsenz.com -u nizaicai -p !@#$%^&*() -f $filename-cd $cd
if ($?)
{
Write-Host -foregroundcolor green "上传到下载服务器成功!"
}
else
{
Write-Host -foregroundcolor red "上传到下载服务器失败!"
}
}
function ExportDNTSource
{
param([string]$url,[string]$path)
Remove-Item $path -force -recurse
svn export $url $path从svn中导出无版本控制的源代码
if ($?)
{
Write-Host -foregroundcolor green "导出源代码成功!"
}
else
{
Write-Host -foregroundcolor red "导出源代码失败!"
}
}
这里需要注意的是dnt_publish.ps1文件中引入function.ps1文件的方法:文件名前用了两个点,而且两个点中间需要有空格。闲言碎语:不才初步体验了PowerShell一下,感觉很不错哦,像粘合剂一样把一些小工具,WMI.NetFramework等联系起来组成超级强大的武器。语法么还是稍稍感觉有些怪,不太舒服,不过习惯就好了。另外如果VS能支持PowerShell就好了,感觉PowerShellPlus用起来还是稍稍不爽。自从写了这个脚本,一切只需轻轻的点一下鼠标,真个过程就自动ok了(过程:svncheckout->MSBuild编译解决方案->上传到FTP服务器)。当然结合前天代震军同学翻译的文章
本文标签:
很赞哦! ()
相关教程
- PHP echo()函数:字符串输出机制与工程实践
- PHP convert_uudecode()函数:uuencode解码原理与工程实践
- PHP数组是什么?从底层结构到项目实践完整讲解
- PHP更新MySQL数据记录:从基础到实践
- PHP文件删除操作:unlink()函数的正确用法与避坑实践
- PHP数组与字符串互转:Implode、Explode与Json_encode的实践运用
- PHP循环结构精讲:For循环与Foreach循环的实践运用
- JavaScript Symbol.split属性深度解析与实践指南
- JavaScript Reflect.set()方法深度解析与编程实践
- JavaScript Reflect方法详解与实践指南
- JavaScript Proxy中handler.set()方法的深入理解与实践
- JavaScript Map的values()方法:从原理到实践
图文教程
mysql+apache+Discuz搭建Discuz论坛
把1.2创建的数据库分配给1.1创建的用户。(之所以这样做,是为了防止数据库被注入时,只能操作本数据库,而不能操作数据库的user表,该表存有数据库的用户名和密码
discuz数据批量入库接口
近期在做社区,优选discuz,数据需要用scrapy爬虫批量入库,就写了一个php入库接口。define('PW', 'abc123456');//一定要修改if($_REQUEST['pw'] !== PW){
Discuz3.X整合CAS的方法示例
有很多朋友问我为什么没能整合成功?我也没有能及时回复,在此表示抱歉。实际上将登录的过程是在Cas Server 登录页面 中完成的, DZ中的登录用户名密码这些都可以隐藏掉。 这个需要改模板了。
基于docker构建discuz论坛的方法
下载discuz的zip包,将discuz论坛包解压:目录内容:新建docker-compose.yml文件:执行之后说是需要先执行下docker-compose build之后再执行 docker-compose up -d
相关源码
-
(自适应)物流运输快递仓储货运网站模板免费下载基于PbootCMS内核开发的物流运输行业专用模板,深度适配仓储货运企业的业务展示需求。前端采用响应式布局,自动适配手机端访问,后台数据实时同步更新,帮助企业高效展示运输网络、仓储设施、服务流程等核心业务模块。查看源码 -
(自适应)调节阀门气动球阀控制阀网站模板源码下载为调节阀门、气动球阀等工业设备企业打造的响应式网站模板,基于PbootCMS系统开发。突出产品参数展示与技术文档管理功能,通过专业化的布局设计有效呈现工业设备特性,适配各类终端访问需求。查看源码 -
自适应容器设备机械行业通用pbootcms网站模板本模板是一款基于PbootCMS开源内核深度开发,为容器制造、容器设备、压力容器及相关行业量身打造的高品质响应式企业网站模板。查看源码 -
(自适应响应式)AI智能电子科技产品pbootcms网站模板下载基于PbootCMS内核的响应式模板,为AI智能硬件、电子产品等科技企业打造,通过技术创新实现品牌数字化升级。查看源码 -
响应式高端家居家具装修类pbootcms模板网站源码家居装修、空间设计企业打造的营销型网站解决方案,基于PbootCMS内核深度开发。采用前沿响应式架构,适配手机端与PC端浏览体验查看源码 -
(PC+WAP)蓝色钢材加工建筑装修施工材料网站模板下载为钢材加工企业设计的PbootCMS响应式模板,采用PC+WAP双端适配技术,数据实时同步。简洁大气的蓝色工业风格设计,突出钢材加工行业特性,其他制造业用户更换图文内容即可快速应用。查看源码
| 分享笔记 (共有 篇笔记) |
