• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wykonanie polecenia cmd winforms c#

VPS Starter Arubacloud
+1 głos
161 wizyt
pytanie zadane 24 sierpnia 2021 w C# przez mateusz45 Gaduła (3,240 p.)

cześć mam problem chce aby mój program (winforms c#)  po kliknięciu wykonywał polecenie PowerShell a rezultat wyświetlał w textbox aby wykonał polecenie umiem zrobić:

                    using (PowerShell ps = PowerShell.Create())
                    {
                        //pzykładowe polecenie ipconfig
                        ps.AddScript("ipconfig");
                        ps.Invoke();
                    }

ale chodzi o to aby efekt jeszcze wyświetlił w textbox

komentarz 24 sierpnia 2021 przez Pawel1995 Gaduła (3,810 p.)

Czy przypadkiem metoda ps.InvocationStateInfo() nie bedzie rozwiązaniem twojego problemu?

komentarz 24 sierpnia 2021 przez mateusz45 Gaduła (3,240 p.)
Składowej „PowerShell.InvocationStateInfo”, której nie można wywoływać, nie można używać jak metody.(napisałem tak Console.WriteLine(ps.InvocationStateInfo());)
komentarz 24 sierpnia 2021 przez mateusz45 Gaduła (3,240 p.)

@Pawel1995, a jak napisałem  Console.WriteLine(ps.InvocationStateInfo); to wyświetliło System.Management.Automation.PSInvocationStateInfo

komentarz 25 sierpnia 2021 przez Pawel1995 Gaduła (3,810 p.)

@mateusz45 Przepraszam pomyliłem się polecenie InvocationStateInfo pokazuje czy czy komenda została wykonana. Pokazuje to poprzez "State"

Console.WriteLine(ps.InvocationStateInfo.State);

myslę że rozwiazanie PH03NIX jest dobre. wybacz za wprowadzenie w błąd.

1 odpowiedź

+1 głos
odpowiedź 24 sierpnia 2021 przez PH03NIX Mądrala (6,130 p.)
edycja 24 sierpnia 2021 przez PH03NIX
 PowerShell ps = PowerShell.Create();
            ps.AddScript("ipconfig");
            var results = ps.Invoke();

W zmiennej result w powyższym kodzie znajduje się wynik działania ipconfig (w formie tablicy, gdzie każdy obiekt to jedna linia odpowiedzi):

Jeżeli wystarczy ci cmd (tak jak w temacie) możesz wykorzystać klasę Process:

  var processStartInfo = new ProcessStartInfo
            {
                FileName = "cmd.exe",
                UseShellExecute = false,
                CreateNoWindow = true,
                RedirectStandardOutput = true,
                Arguments = "/c ipconfig"
            };
            var cmd = Process.Start(processStartInfo);
            cmd.WaitForExit();
            var message = cmd.StandardOutput.ReadToEnd();
            Console.WriteLine(message);

 

komentarz 25 sierpnia 2021 przez mateusz45 Gaduła (3,240 p.)
a da się jakąś pętlą wyświetlić wszystkie rzeczy z listy bo próbowałem na różne sposoby ale nigdy nie uzyskałem nawet przybliżonego efektu
komentarz 26 sierpnia 2021 przez PH03NIX Mądrala (6,130 p.)

Chodzi ci o osiągnięcie formatowania źródłowego? Wystarczy wypisać każdy element w osobnym wierszu.

  var outputStream = string.Empty;
foreach(var result in results)
            {
                outputStream += $"{result} \n";
            }

 

Podobne pytania

+1 głos
0 odpowiedzi 208 wizyt
0 głosów
1 odpowiedź 249 wizyt
pytanie zadane 20 września 2022 w Sieci komputerowe, internet przez jakwoz Nowicjusz (120 p.)
+1 głos
1 odpowiedź 522 wizyt
pytanie zadane 23 stycznia 2021 w Inne języki przez Jagoda Z Kochowa Nowicjusz (130 p.)

92,452 zapytań

141,262 odpowiedzi

319,078 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...