通过C#代码启动和停止远程计算机上的IIS

我需要在远程计算机上停止IIS,然后执行一些工作,然后在完成工作后再次启动IIS服务。 我试图使用C#代码执行此操作。 我已经看到一些关于通过代码在远程机器上启动IIS的类似问题。 但我无法从中获得任何有效的解决方案。 关于如何进行启动和停止操作的一些明确的C#代码将非常有用。

Microsoft.Web.Administration命名空间具有管理IIS所需的function。 请查看: http : //msdn.microsoft.com/en-us/library/microsoft.web.administration%28VS.90%29.aspx 。

但是,如果您只想停止并启动服务,则可以使用Service.Controller管理服务

  ServiceController service = new ServiceController(serviceName); TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds); service.Start(); service.WaitForStatus(ServiceControllerStatus.Running, timeout); 

Service.Controller类页面应该包含您需要的所有信息。 找到它, http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicecontroller.aspx

这是一个可用于启动服务的完整示例:

 public static void StartService(string serviceName, int timeoutMilliseconds) { ServiceController service = new ServiceController(serviceName); try { TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds); service.Start(); service.WaitForStatus(ServiceControllerStatus.Running, timeout); } catch { // ... } } 

查看上面的链接以获取更多文档。

您可以按如下方式连接到远程服务器:

 ServiceController svc = new ServiceController("Service", "COMPUTERNAME"); 

如果您在远程服务器上需要一组不同的权限,则需要完成更多工作。 请参阅此问题, 使用ServiceController和模拟启动远程Windows服务 。

解决方案A:

您可以创建一个.bat文件运行时,如:

 # for stopping iisreset -stop # for starting iisreset -start 

然后使用PsExec在远程计算机上执行它。

解决方案B:直接启动或停止“IISADMIN”服务。 要管理远程服务,您可以使用以下链接:

  • 监视和管理远程计算机上的服务
  • 使用C#中的ServiceController来停止和启动服务

幸运;)