2013-01-09 8 views
0

Je travaille actuellement sur une application qui vérifie si une application avec un certain nom existe sur un serveur IIS. J'utilise PsExec pour exécuter cette commande. Pendant que je testais ceci à travers la ligne de commande, j'ai remarqué que quand une APP n'existe pas, appcmd se termine avec ExitCode 1. De même, il se ferme avec 0 quand une APP existe.psexec via Process donne différents exitcode que psexec via cmd

Je voulais également utiliser ce comportement, donc je n'ai pas besoin de faire de redirection de sortie. Je me soucie seulement de savoir si l'APP existe ou non. PsExec utilise le code de sortie de la commande qu'il appelle comme son propre code de sortie. J'ai essayé ceci avec la ligne de commande et ai vérifié le résultat avec echo %errorlevel% et cela fonctionne très bien.

Mais je rencontre un problème avec le code suivant.

Process process = new Process(); 
    process.StartInfo.FileName = @"psexec"; 

    string appcmd = @"C:\windows\system32\inetsrv\appcmd"; 
    process.StartInfo.Arguments = String.Format(@"{0} -u {1} -p {2} -S {3} LIST APP ""{4}""", 
               ip, username, password, appcmd, appname); 

    process.Start(); 
    process.WaitForExit(); 
    Console.WriteLine(process.ExitCode); 

Cela s'exécute très bien. Mais il ne retourne pas le code de sortie que PsExec (devrait?) Donne. Il retourne toujours 0. Donc maintenant je ne peux pas utiliser l'astuce que j'ai trouvée plus tôt pour vérifier si une APP existe ou non.

Y at-il une solution connue pour cela? Y a-t-il une solution similaire? Ou devrais-je aller avec la redirection de sortie?

Répondre

0

Pas vraiment une solution au problème. Mais parce que les applications Web dans IIS doivent avoir un nom unique, créer une application qui existe déjà entraînera une erreur mais rien n'aura changé.

Cela signifie que cela fonctionne parfaitement bien si j'essaie toujours de créer une nouvelle application. S'il n'existe pas, il sera fait, s'il existe déjà rien ne se passera.

Questions connexes