试图运行psexec远程服务器和回收应用程序池

试图运行psexec远程服务器和回收应用程序池

问题描述:

如果我从我的命令提示符运行它,它工作正常。试图运行psexec远程服务器和回收应用程序池

PSEXEC \服务器的Cscript.exe iisapp.vbs/A AppName的/ R

我试着用C#控制台应用程序,同样的事情。我正在使用下面的代码,但大多数情况下应用程序挂起并且没有完成,并且几次它会抛出错误代码。我做错了吗?任何人都知道我可以在哪里查找错误或错误代码?

static void RecycleAppPool(string sServer) 
     { 
      Console.Clear(); 
      ProcessStartInfo p = new ProcessStartInfo("psexec.exe", "\\\\" + sServer + " cscript.exe iisapp.vbs /a <AppName> /r"); 
      p.RedirectStandardInput = true; 
      p.UseShellExecute = false; 
      Process.Start(p); 
     } 

当有出错完成,看起来像这样

“的Cscript.exe,错误代码退出-2147024664”

编辑

这个工作......

static void RecycleAppPool(string sServer) 
{ 
      Console.Clear(); 
      ProcessStartInfo p = new ProcessStartInfo("psexec.exe"); 
      p.Arguments = @"\\" + sServer + @" cscript.exe iisapp.vbs /a AppName /r"; 
      p.UseShellExecute = false; 
      Process.Start(p); 
} 
+0

如果我注释掉RedirectStandardInput和UseShellExecute,它似乎可以正常工作,但会为该过程启动一个单独的窗口。我希望将所有内容保存在一个窗口(控制台)中,如果可能的话 – James 2010-12-21 22:56:15

VS2003/8/10:工具 - >错误查找。以十六进制粘贴错误代码。 800700E8。这是“管道正在关闭”。不是很有帮助 - 我猜想有一些重定向问题。

您是否真的拥有ProcessStartInfo参数,还是用于替换实际的应用程序名称?

+0

它取代了应用程序名称 – James 2010-12-21 22:52:02

您是否尝试过使用appcmd而不是iisapp.vbs来回收?

并且,在此thread中,他们使用WMI回收了远程应用程序池。

如果这是IIS7那么你可以从C#Web管理命名空间:

using System; 
using System.Xml.Serialization; 
using Microsoft.Web.Administration; 
using System.Linq; 
using System.Runtime.InteropServices; 

///... 

var serverManager = ServerManager.OpenRemote(@"\\myiisserver"); 
var appPool = serverManager.ApplicationPools["my app pool name"]; 
appPool.Recycle(); 

您可以了解更多有关Web Admin Namespace here。到目前为止,它对我们来说工作得非常好。但必须安装在客户端和远程机器上。