2009-05-26 15 views
16

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#?

+1

Duplikat http://stackoverflow.com/questions/742262/what-can-i-do-with-c-and-powershell – NinethSense

+2

@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

+1

Innym pytaniem jest więcej o rozszerzaniu lub użyciu Powershell z C#. Zdecydowanie nie jest duplikatem. – Joey

Odpowiedz

15

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.

1
  • 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.

7

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.

+0

przestawionym na używanie słowa enterprisey – SheldonH

0

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.

+2

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

+0

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

Powiązane problemy