Попытка запустить psexec для удаленного доступа к серверу и перезапустить пул приложений - PullRequest
1 голос
/ 22 декабря 2010

Если я запускаю это из моей командной строки, оно работает нормально.

psexec \ ServerName 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"

EDIT

Это сработало ...

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);
}

Ответы [ 3 ]

0 голосов
/ 22 декабря 2010

Вы пробовали перерабатывать, используя appcmd вместо iisapp.vbs?

И в этом потоке они перерабатывали удаленный пул приложений с помощью WMI.

0 голосов
/ 22 декабря 2010

Если это IIS7, вы можете узнать пространство имен веб-администратора из C #:

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 вы можете узнать здесь .Пока что это сработало очень хорошо для нас.НО должен быть установлен на клиентских и удаленных машинах.

0 голосов
/ 22 декабря 2010

VS2003 / 8/10: Инструменты-> Поиск ошибок. Вставьте код ошибки в шестнадцатеричном виде. 800700E8. Это «Труба закрывается». Не очень полезно - я думаю, некоторые проблемы с перенаправлением.

У вас действительно есть параметр ProcessStartInfo, или он используется для замены действительного имени вашего приложения?

...