Windows 远程停止iis服务

最近遇到一个小需求,需要重启远程计算机的iis服务。 需求背景是这样的,用jenkins 做ci的时候, 由于项目是有单独的web服务器,项目虽然是一套, 但是分为A,B,C三个web系统,其中A,B系统要部署很多套,以便C使用。实现的思路就是

1.jenkin 从svn里面拉取code

2.jenkins编译并 在jenkins 服务器输出A,B,C

3.用 CIFS Publishers 的方式把ABC输出拷贝到测试环境的相应站点目录下,其中AB要拷贝很多分(有很多个站点) 

只要拷贝结束后,QA就可以看到最近部署结果。

可是如果有人正在访问测试环境,这个时候同步文件肯定会失败的。如果在同步前 强制停止远程服务器的iis, 同步后再启动, 这样拷贝文件 失败的概率又要小很多了。我这里用的是psexec 来实现控制远程计算机服务。

psexec \\192.168.0.xxx -u Administrator -p xxxx cmd

iisreset /stop
iisreset /start

当然在jenkins 可以这样用psexec \\192.168.0.xxx -u Administrator -p xxx iisreset /stop

有关远程控制大家可以参考

Three ways to run remote Windows commands

我测试的时候搭建了两套jenkins 环境,在jenkins里面运行该命令。一套运行psexec 是ok的,一套运行时老是报错误, 主要信息是:

 

This is the first run of this program. You must accept EULA to continue.

Use -accepteula to accept EULA.

还遇到说句柄无效。 后来在网上找到了解决方案:http://www.it1352.com/329158.html 修改jenkins的登录账号

 

在实际测试环境中,由于有很多项目,所以很多时候不是重启IIS,而是停用应用程序池->拷贝文件->然后再启动应用程序池

D:\NodeJS\psexec \\192.168.0.12X -u Administrator -p XXX c:\windows\system32\inetsrv\AppCmd.exe stop apppool /apppool.name:"xxx"

jenkins CIFS Publishers 拷贝文件

D:\NodeJS\psexec \\192.168.0.12X -u Administrator -p XXX c:\windows\system32\inetsrv\AppCmd.exe start apppool /apppool.name:"xxx"

posted on   dz45693  阅读(2415)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构

导航

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5
点击右上角即可分享
微信分享提示