如果你已经顺利完成PowerShell远程配置,接下来可以看下我是如何去完成IIS发布WebApi的,当然每个人要根据自己的实际情况去调整。
$WebApiDown ="c:\WebApiTempDown" #下载文件临时存放路径,如'D:\PSTest'
$FileIP =$args[0] #zip更新包下载Ip地址,如172.x.x.x
$BinPath=$args[1] #升级替换Bin路径,如'D:\TestBin'
$NeedBakBin =$args[2] #是否备份原WebApiBin目录
$BakPath ="c:\WebApiBak"
$finishTime= Get-Date -Format "yy-MM-dd HH:mm:ss"
Write-Host "${env:COMPUTERNAME} 脚本开始时间 ${finishTime}" -ForegroundColor Yellow
$zipFileName= Get-Date -Format "yyMMddHHmm"
if(!(Test-Path $BinPath)){
Write-Host "bin目录不存在"
return -5
}
if($NeedBakBin -eq 1){
New-Item -ItemType Directory -Path $BakPath -Force | Out-Null
Compress-Archive -CompressionLevel Fastest -Path "${BinPath}\*" -DestinationPath "${BakPath}\${zipFileName}.zip"
Write-Host "${env:COMPUTERNAME} 备份压缩路径 ${BakPath}\${zipFileName}.zip" -ForegroundColor Yellow
}
New-Item -ItemType Directory -Path $WebApiDown -Force | Out-Null
if(!$?){
Write-Host "创建目录失败"
return -2
}
Start-BitsTransfer -Source "http://${FileIP}/down/xxxWebAPI.zip" -Destination "${WebApiDown}/${zipFileName}.zip"
#(new-object System.Net.WebClient).DownloadFile("http://${FileIP}/down/test.zip", "${WebApiDown}/${zipFileName}.zip" )
#$webClient =(new-object System.Net.WebClient);
#$webClient.Encoding= [System.Text.Encoding]::GetEncoding('UTF-8')
#$webClient.DownloadFile("http://${FileIP}/down/test.zip", "${WebApiDown}/${zipFileName}.zip" )
if($?){
Expand-Archive -Path "${WebApiDown}/${zipFileName}.zip" -DestinationPath "${WebApiDown}/${zipFileName}" -Force
if($?){
Copy-Item -Path "${WebApiDown}/${zipFileName}\*" -Destination $BinPath -Force -Recurse
if($?){
Remove-Item -Path "${WebApiDown}" -Recurse -Force
Write-Host "${env:COMPUTERNAME} 操作成功,Bin路径 ${BinPath}"
return 0
}else{
Write-Host "复制到bin目录失败"
return -4
}
}
else{
#-3 解压失败
Write-Host "解压失败"
return -3
}
}
脚本简单的说明一下,首先我在自己电脑上搭建了一个IIS,用于存放需要更新下载的文件了;每一台IIS都是一样的,所以没必要每台都做备份,通过$NeedBakBin是否等于1告知脚本要不要备份原Api; 另外PowerShell有4种下载方式,我均尝试了,都差不多,任选一种即可;由于我经常需要VPN办公,所以脚本中使用压缩技术也是非常有必要的。
这里其实我遇到一个问题,但是不影响发布,就是在下载时,如果文件名是中文的,本地测试没问题,到了Server2016服务器就变成了文件名乱码,同时压缩包里面的文件如果有中文名称,在没解压时就已经乱码了,还好项目里没有中文名称,所以没问题,所以我这里尝试了4种下载,都不能解决文件中文名乱码的问题。
如何使用脚本请看第三章。
本文链接: https://www.pstips.net/powershell%e5%8f%91%e5%b8%83iis%ef%bc%88%e4%ba%8c%ef%bc%89.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!