Czy PowerShell działa na innych systemach operacyjnych oprócz Windows?
To może być bardzo frustrujące, gdy twój profesor mówi jedno o PowerShellu, a różne strony internetowe wydają się dowodzić czegoś przeciwnego. Czy PowerShell działa na systemach innych niż Windows, czy nie? Dzisiejszy post z pytaniami i odpowiedziami dla SuperUser zawiera odpowiedź na zaintrygowane pytanie czytelnika.
Dzisiejsza sesja pytań i odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, opartego na społecznościach grupowania witryn z pytaniami i odpowiedziami.
Pytanie
Czytnik SuperUser FredSavage187 chce wiedzieć, czy PowerShell działa w innych systemach operacyjnych oprócz Windows:
Mój profesor informatyki niedawno przedstawił nam quiz i jedno z pytań brzmiało: "Prawda czy fałsz: PowerShell działa na systemach Windows, Mac i Linux". Poprawną odpowiedzią było "fałsz" i utrzymuje, że PowerShell to rzecz tylko dla Windows. Ale znalazłem kilka stron internetowych, które mówią inaczej:
PowerShell jest systemem otwartym i jest dostępny w systemie Linux [Microsoft Azure Blog]
Repozytorium PowerShell [GitHub]
Który z nich jest rzeczywiście poprawny? Czy PowerShell działa na systemach Linux i Mac OS, a także Windows?
Czy PowerShell działa na innych systemach operacyjnych poza Windows?
Odpowiedź
Pomocnik SuperUser Ben N ma dla nas odpowiedź:
Tak. Znaczna część PowerShell to .NET, więc może działać na dowolnym systemie operacyjnym z Common Language Runtime (CLR). W systemie Windows jest to .NET Framework. W przypadku innych systemów operacyjnych, w tym systemu Linux, można użyć CoreCLR, open-source, międzyplatformowego podzbioru .NET Framework.
Jak się nauczyłeś w repozytorium PowerShell na GitHub, obsługiwanych jest sporo systemów operacyjnych i dystrybucji. Na przykład tutaj są instrukcje dla Ubuntu i demonstracja:
Można argumentować, że nie wszystkie programy PowerShell są dostępne w środowiskach innych niż Windows, ponieważ niektóre funkcje zależą od bibliotek znalezionych tylko w systemie Windows. The ParsedHtml własność na HtmlWebResponseObject typ zwracany przez Invoke-WebRequest, na przykład jest użyteczny tylko w systemie Windows, ponieważ przechowuje obiekt COM pochodzący z niezarządzanej biblioteki, mshtml.dll być konkretnym. Na innych platformach nic tam nie ma. Oczywiście istnieją polecenia cmdlet do zarządzania systemami dostępnymi tylko w systemie Windows, np. Nowoczesne aplikacje (Get-AppxPackage, na przykład).
Mimo to infrastruktura PowerShell działa doskonale na innych systemach operacyjnych, wiele poleceń cmdlet można wykorzystać w dowolnym miejscu, a obsługa jest tylko coraz lepsza.
Czy masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.
Kredyty wizerunkowe: Jeff Hicks (Petri IT Knowledgebase)