Wiem, że PowerShell jest dość potężny, ponieważ jest językiem skryptowym, w którym masz dostęp do całej struktury .Net (to wszystko, co wiem o tym). Ale staram się zrozumieć, co jest wielkim szumem na temat Powershell, kiedy mogę użyć C# do zakodowania dokładnie tego samego?Dlaczego miałbym używać Powershell przez C#?
Odpowiedz
Myślę, że zadajesz niewłaściwe pytanie. Powinno być: "Dlaczego powinienem używać C#, gdybym mógł użyć Powershell do zakodowania tego samego?"
To jest stary argument dotyczący skryptów w porównaniu ze skompilowanym oprogramowaniem. Rozwiązanie skryptowe jest bardziej elastyczne (do edycji skryptu potrzebny jest tylko Notatnik, nie jest wymagany żaden kompilator).
Dla małego zadania skrypt jest szybszy do napisania, wdrożenia i zmiany niż tworzenie projektu w Visual Studio, kompilowanie go, wdrażanie go do celu, poprawianie kodu, kompilowanie go, ponowne wdrażanie ...
Dla każdego większego zadania zdecydowanie preferuję IDE, który kompiluje mój kod. Komunikaty o błędach w samej uszkodzonej wersji stanowią ogromną pomoc w znalezieniu przyczyny. (Sprawność Runtime jest zwykle lepszy w skompilowanego oprogramowania, ale z nowoczesnymi procesorami sprowadza się do różnicy kilku milisekundach sekund, więc dla większości projektów, to nie ma znaczenia.)
Ty może zrobić każdy rodzaj projektu w C# lub Powershell. To nie znaczy, że musisz powinien.
- Nie jest to język skompilowany.
- Posiada ekosystem pluginów z mnóstwem "bibliotek" do robienia różnych rzeczy związanych z domeną, takich jak kopiowanie plików, zabawa z AD, Exchange.
- To właściwe narzędzie dla innego, nieco pokrywającego się zestawu zadań.
- Jest o wiele bardziej potężny i spójny niż CMD.EXE i inne rzeczy ewoluowane z powłok poleceń, które musiały pasować do 8K RAM.
I dlaczego używasz C# i tak, ILASM może robić wszystko z większą kontrolą, a ty po prostu wywołujesz rzeczy w BCL.
Kiedy nie używamy Powershell jako powłoki, ale środowiska programistycznego, można myśleć o Powershell jako rodzaj interaktywnego .NET placu zabaw. Nigdy nie używałbym Powershell do prototypowania GUI, ale używałam go w przeszłości do zabawy z obiektami .NET i ich metodami w celu rozwiązania konkretnego problemu. Po prostu zmiana wiersza poleceń jest bardziej wydajna niż wykonanie cyklu edycji/zapisywania/kompilowania/uruchamiania za każdym razem, gdy wprowadzasz zmianę.
Co więcej, odpowiednie domeny dla obu języków są bardzo różne. Powershell jest w swej istocie narzędziem administracyjnym i automatyzacyjnym, mającym usprawniony dostęp do wielu rzeczy, które mogą być bardziej niewygodne w korzystaniu z innego środowiska, takiego jak rejestr, magazyn certyfikatów, WMI i inne.
Prawdopodobnie nie chcesz pisać korporacyjnej aplikacji bazodanowej z Powershell i prawdopodobnie nie chcesz pisać programu C#, aby skopiować pewne rzeczy w systemie plików.
przestawionym na używanie słowa enterprisey – SheldonH
I uogólniać swoje pytanie na następujące:
Dlaczego chciałbym używać (język poziom wyższy że wiem trochę o) nad (niższy poziom języka więcej wiem o)?
Celem języka wyższego poziomu jest streszczenie typowych zadań, aby szybciej je pisać. Wiele osób, które zadają to pytanie, nie może sobie wyobrazić korzyści płynących z języka wyższego poziomu, ponieważ są one już wygodne z językiem niższego poziomu.
Ostatecznie wszystko sprowadza się do twojej gotowości do nauki abstrakcji języka wyższego poziomu w nadziei, że możesz stać się tak biegły w tym jak niższy.
Nie uważam, że Powershell jest z natury "wyższym poziomem" niż C#, to po prostu ich odpowiednie zadanie domeny są bardzo różne. – Joey
PowerShell jest rzeczywiście wyższym poziomem, choćby dlatego, że koncepcja "potoku" ułatwia ponowne wykorzystanie i łączenie "elementów" ... Z pewnością PowerShell spada do niższego poziomu, gdy trzeba zrobić coś, czego jeszcze nie ma istniejący skrypt lub cmdlet, ale kompozycja cmdletów i funkcji jest znacznie wyższa niż cokolwiek w C# (lub Ruby/Python/Perl). – Jaykul
- 1. Dlaczego miałbym używać funkcji rozbieżnych?
- 2. Dlaczego miałbym kiedykolwiek używać DoublyLinkedList w PHP?
- 3. Dlaczego nie miałbym używać npm do instalacji przędzy?
- 4. Co to są przejściowe atrybuty factory_girl? Dlaczego miałbym go używać?
- 5. Dlaczego miałbym zachować stan płaski
- 6. Dlaczego miałbym raczej używać natywnego dll lub serwera com do wywoływania kodu Delphi z C#?
- 7. Skąd miałbym pomysł na następny standard C?
- 8. Dlaczego ktoś miałby używać C zamiast C++?
- 9. Dlaczego miałbym wybrać prosty, ponad zrelaksowany proces kanonizacji dla DKIM?
- 10. Dlaczego nie miałbym używać Child.prototype = Parent.Prototype zamiast Child.prototype = new Parent(); dla dziedziczenia JavaScript?
- 11. Co to są klasy Dynamic Proxy i dlaczego miałbym je używać?
- 12. dlaczego miałbym .is_a? i .class dają sprzeczne wyniki?
- 13. Angular2 dlaczego używać @Output przez @Input dla callbacków
- 14. Powershell vs C#
- 15. Dlaczego PowerShell ISE jest zawieszony w tym programie C#?
- 16. Dlaczego używać c() do definiowania wektora?
- 17. Dlaczego C++ nie pozwala mi używać typeof?
- 18. Szablon w C++, dlaczego muszę używać enum
- 19. Iterowanie przez plik JSON PowerShell
- 20. PowerShell: czytanie zapisów PowerShell Transcript
- 21. Powershell: filtruj zawartość pliku przez tablicę ciągów znaków
- 22. Wywoływanie PowerShell z C#
- 23. Dlaczego wywoływanie PowerShell z C# rzucić wyjątek System.Management.Automation.CommandNotFoundException?
- 24. PowerShell: odzyskać obiekt JSON przez wartość pola
- 25. C# - PowerShell AddPSSnapin powoduje błędy
- 26. Dlaczego lepiej używać funkcji wersetów właściwości readonly?
- 27. PowerShell nie może używać dopasowanego typu wyliczenia?
- 28. Dlaczego zadania Powershell są takie wolne?
- 29. Dlaczego warto używać odwołań do usług Visual Studio przez svcutil?
- 30. Dlaczego należy używać modułu bundler (webpack) przez runner-biegacz (grunt)?
Duplikat http://stackoverflow.com/questions/742262/what-can-i-do-with-c-and-powershell – NinethSense
@NinethSense: Nie sądzisz, że link, który podałeś było o co się można zrobić zarówno w trybie powershell, jak i C#? Chcę wiedzieć, dlaczego wybrałbym Power Shell na C# – Draco
Innym pytaniem jest więcej o rozszerzaniu lub użyciu Powershell z C#. Zdecydowanie nie jest duplikatem. – Joey