Ich versuche, von Powershell, indem Sie den folgenden Befehl ein Anwendungspool zu stoppenkonnte nicht die Arbeit Powershell Scriptlet machen aus C#
Stop-WebAppPool "Test1234"
Das funktionierte. Ich habe überprüft, dass der Anwendungspool "Test1234" gestoppt wurde.
Wenn ich es jedoch als test.ps1-Datei erstellt und dasselbe aus meinem C# -Code aufgerufen habe, hat es nicht funktioniert.
C# -Code
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"powershell.exe";
startInfo.Arguments = @"& 'c:\test.ps1'";
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
Process process = new Process();
process.StartInfo = startInfo;
process.Start();
Es sind keine Störungen haben werfen, aber nicht funktionierte. Warum das passiert ist und wie man diese Arbeit bekommt?
warum der Befehl args "& 'c: \ test.ps1'" sicher sein gerechten "c: \ test.ps1" – BugFinder
In PowerShell ausgelöste Fehler werden häufig nicht als Ausnahme auf Prozessebene zurückgegeben (es sei denn, Sie verwenden explizit den Befehl "exit" in einem Skript). Ihr test.ps1-Skript benötigt eine Fehlerbehandlung und muss etwas mit diesen Fehlern tun, damit Sie es untersuchen können. Wenn C# ein Skript auf diese Weise ausführt, hat es keine Sichtbarkeit des Interieurs. –