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

Wykonanie polecenia cmd winforms c#

Object Storage Arubacloud
+1 głos
172 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 237 wizyt
0 głosów
1 odpowiedź 270 wizyt
pytanie zadane 20 września 2022 w Sieci komputerowe, internet przez jakwoz Nowicjusz (120 p.)
+1 głos
1 odpowiedź 545 wizyt
pytanie zadane 23 stycznia 2021 w Inne języki przez Jagoda Z Kochowa Nowicjusz (130 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...