PowerShell — PowerShell

PowerShell
PowerShell Core 6.0 ikona.png
PowerShell Core 7.1.5 z Windows Terminal.png
Zrzut ekranu sesji PowerShell Core w Terminalu Windows
Paradygmat Imperatywny , potokowy , obiektowy , funkcjonalny i refleksyjny
Zaprojektowany przez Jeffrey Snover , Bruce Payette, James Truher (i wsp.)
Deweloper Microsoft
Po raz pierwszy pojawiły się 14 listopada 2006 ; 14 lat temu ( 2006-11-14 )
Wersja stabilna
7.1.5 / 14.10.2021 ; 4 dni temu ( 14.10.2021 )
Wersja zapoznawcza
v7.2.0-preview.10 / 28 września 2021 ; 20 dni temu ( 28.09.2021 )
Dyscyplina pisania Silny , bezpieczny , ukryty i dynamiczny
Język implementacji C#
Platforma .NET Framework , .NET Core
OS
Licencja Licencja MIT (ale składnik Windows pozostaje zastrzeżony )
Rozszerzenia nazw plików
Strona internetowa microsoft .com /powershell
Wpływem
Python , Ksh , Perl , C# , CL , DCL , SQL , Tcl , Tk , Chef , Puppet

PowerShell jest automatyzacja zadań i zarządzania konfiguracją programu od Microsoft , składający się z linii poleceń shell i związanego z językiem skryptowym . Początkowo tylko składnik systemu Windows, znany jako Windows PowerShell , został udostępniony jako open source i wieloplatformowy 18 sierpnia 2016 r. wraz z wprowadzeniem PowerShell Core . Pierwsza jest oparta na .NET Framework , druga na .NET Core .

W PowerShell zadania administracyjne są zazwyczaj wykonywane przez polecenia cmdlet (wymawiane command-lets ), które są wyspecjalizowanymi klasami .NET implementującymi określoną operację. Działają one, uzyskując dostęp do danych w różnych magazynach danych, takich jak system plików lub rejestr , które są udostępniane programowi PowerShell za pośrednictwem providerów . Deweloperzy zewnętrzni mogą dodawać polecenia cmdlet i dostawców do programu PowerShell. Polecenia cmdlet mogą być używane przez skrypty, które z kolei mogą być pakowane w moduły.

PowerShell zapewnia dostęp do COM i WMI , umożliwiając administratorom wykonywanie zadań administracyjnych zarówno na lokalnych, jak i zdalnych systemach Windows, a także WS-Management i CIM umożliwiających zarządzanie zdalnymi systemami Linux i urządzeniami sieciowymi. PowerShell udostępnia również interfejs API hostingu, za pomocą którego środowisko uruchomieniowe PowerShell można osadzić w innych aplikacjach. Te aplikacje mogą następnie używać funkcji programu PowerShell do implementowania niektórych operacji, w tym tych, które są udostępniane za pośrednictwem interfejsu graficznego . Ta funkcja została wykorzystana przez program Microsoft Exchange Server 2007 w celu udostępnienia funkcji zarządzania jako cmdlet i dostawców PowerShell oraz zaimplementowania graficznych narzędzi zarządzania jako hostów PowerShell, które wywołują niezbędne polecenia cmdlet. Inne aplikacje firmy Microsoft, w tym Microsoft SQL Server 2008, również udostępniają swój interfejs zarządzania za pośrednictwem poleceń cmdlet PowerShell.

PowerShell zawiera własną obszerną pomoc opartą na konsoli (podobną do stron podręcznika man w powłokach systemu Unix ) dostępną za pośrednictwem polecenia Get-Helpcmdlet. Zaktualizowaną zawartość pomocy lokalnej można pobrać z Internetu za pomocą polecenia Update-Helpcmdlet. Alternatywnie, pomoc z Internetu można uzyskać w poszczególnych przypadkach, -onlineprzechodząc na Get-Help.

Tło

Tło

Każda wersja systemu Microsoft Windows dla komputerów osobistych zawiera interpreter wiersza poleceń (CLI) do zarządzania systemem operacyjnym. Jego poprzednik, MS-DOS , opierał się wyłącznie na CLI. Są to COMMAND.COMw MS-DOS i Windows 9x , a cmd.exena Windows NT rodziny systemów operacyjnych. Oba obsługują kilka podstawowych poleceń wewnętrznych. Do innych celów należy napisać oddzielną aplikację konsolową . Zawierają również podstawowy język skryptowy ( pliki wsadowe ), który może służyć do automatyzacji różnych zadań. Nie można ich jednak używać do automatyzacji wszystkich aspektów funkcjonalności graficznego interfejsu użytkownika (GUI), po części dlatego, że odpowiedniki operacji wiersza polecenia są ograniczone, a język skryptowy jest elementarny. W systemie Windows Server 2003 sytuacja uległa poprawie, ale obsługa skryptów nadal była niezadowalająca.

Firma Microsoft próbowała rozwiązać niektóre z tych niedociągnięć, wprowadzając w 1998 r. Host skryptów systemu Windows wraz z systemem Windows 98 i jego hostem opartym na wierszu poleceń cscript.exe. Integruje się z silnikiem Active Script i umożliwia pisanie skryptów w kompatybilnych językach, takich jak JScript i VBScript , wykorzystując interfejsy API udostępniane przez aplikacje za pośrednictwem komponentowego modelu obiektowego ( COM ). Ma jednak swoje wady: jego dokumentacja jest mało dostępna i szybko zyskała reputację jako wektor luk w zabezpieczeniach systemu po tym, jak kilka głośnych wirusów komputerowych wykorzystało słabości w jego zabezpieczeniach. Różne wersje systemu Windows udostępniały różne interpretery wiersza poleceń o specjalnym przeznaczeniu (takie jak netsh i WMIC ) z własnymi zestawami poleceń, ale nie były one interoperacyjne.

Kermit

Pod koniec lat 90. Intel zwrócił się do Microsoftu z prośbą o pomoc w stworzeniu systemu Windows, działającego na procesorach Intela, bardziej odpowiedniej platformy do wspierania rozwoju przyszłych procesorów Intela. W tamtym czasie rozwój procesorów Intela był realizowany na komputerach Sun Microsystems, które działały pod kontrolą systemu Solaris ( wariant Unix ) na procesorach o architekturze RISC . Możliwość uruchamiania wielu skryptów automatyzacji KornShell firmy Intel w systemie Windows została uznana za kluczową. Wewnętrznie Microsoft rozpoczął starania o stworzenie portu Korn Shell dla systemu Windows o nazwie kodowej Kermitwiki. Intel ostatecznie przestawił się na platformę programistyczną opartą na Linuksie , która mogłaby działać na procesorach Intela, czyniąc projekt Kermit zbędnym. Jednak mając zespół w pełni finansowany, menedżer programu Microsoft, Jeffrey Snover, zdał sobie sprawę, że istnieje możliwość stworzenia bardziej ogólnego rozwiązania problemu automatyzacji administracyjnej firmy Microsoft.


Monada

Do 2002 roku Microsoft zaczął opracowywać nowe podejście do zarządzania z poziomu wiersza poleceń, w tym CLI o nazwie Monad (znany również jako Microsoft Shell lub MSH). Idee stojące za nim zostały opublikowane w sierpniu 2002 r. w białej księdze zatytułowanej „Manifest Monad” przez jej głównego architekta, Jeffreya Snovera . W wywiadzie z 2017 r. Snover wyjaśnia genezę PowerShell, mówiąc, że próbował udostępnić narzędzia uniksowe w systemie Windows, które nie działały z powodu „ rdzennych różnic architektonicznych między systemem Windows a Linuksem ”. W szczególności zauważył, że Linux traktuje wszystko jako plik tekstowy ASCII , podczas gdy Windows traktuje wszystko jako „ API, które zwraca dane strukturalne”. Były one zasadniczo niezgodne, co skłoniło go do przyjęcia innego podejścia.

Monad miał być nowym, rozszerzalnym interfejsem CLI o świeżym projekcie, zdolnym do automatyzacji szeregu podstawowych zadań administracyjnych. Microsoft po raz pierwszy zademonstrował Monad publicznie na konferencji Professional Development Conference w Los Angeles w październiku 2003 roku. Kilka miesięcy później otworzyli prywatną wersję beta, która ostatecznie doprowadziła do powstania publicznej wersji beta. Microsoft opublikował pierwszą publiczną wersję beta Monad 17 czerwca 2005, Beta 2 11 września 2005 i Beta 3 10 stycznia 2006.

PowerShell

25 kwietnia 2006 r., niedługo po pierwszym ogłoszeniu Monad, Microsoft ogłosił, że nazwa Monad została zmieniona na Windows PowerShell , pozycjonując ją jako istotną część swojej oferty technologii zarządzania. Release Candidate (RC) 1 programu PowerShell został wydany w tym samym czasie. Istotnym aspektem zarówno zmiany nazwy, jak i RC było to, że był to teraz składnik systemu Windows, a nie zwykły dodatek.

Release Candidate 2 programu PowerShell w wersji 1 zostało wydane 26 września 2006 r., a ostateczne wydanie w sieci Web 14 listopada 2006 r. PowerShell dla wcześniejszych wersji systemu Windows został wydany 30 stycznia 2007 r. Rozwój programu PowerShell v2.0 rozpoczęto przed wydaniem PowerShell v1.0 . Podczas opracowywania firma Microsoft udostępniła trzy wersje zapoznawcze technologii społecznościowych (CTP) . Microsoft udostępnił te wydania publicznie. Ostatnia wersja programu CTP programu Windows PowerShell v2.0 została udostępniona w grudniu 2008 r.

PowerShell dla systemu Linux 6.0 Alpha 9 na Ubuntu 14.04 x64

Program PowerShell v2.0 został ukończony i wprowadzony do produkcji w sierpniu 2009 r. jako integralna część systemów Windows 7 i Windows Server 2008 R2. Wersje programu PowerShell dla systemów Windows XP, Windows Server 2003, Windows Vista i Windows Server 2008 zostały wydane w październiku 2009 r. i są dostępne do pobrania zarówno na platformy 32-bitowe, jak i 64-bitowe. W październikowym wydaniu TechNet Magazine Microsoft nazwał biegłość w PowerShell „najważniejszą umiejętnością, której administrator Windows będzie potrzebował w nadchodzących latach”.

Windows 10 dostarczył platformę testową dla PowerShell.

18 sierpnia 2016 r. firma Microsoft ogłosiła, że ​​stworzyła program PowerShell typu open source i wieloplatformowy z obsługą systemów Windows, macOS , CentOS i Ubuntu . Kod źródłowy został opublikowany w serwisie GitHub . Przejście do open source stworzyło drugie wcielenie programu PowerShell o nazwie „PowerShell Core”, które działa na platformie .NET Core . Różni się od „Windows PowerShell”, który działa na pełnym .NET Framework . Począwszy od wersji 5,1 program PowerShell Core jest dołączany do systemu Windows Server 2016 Nano Server .

Projekt

Kluczową taktyką projektową programu PowerShell było wykorzystanie dużej liczby interfejsów API, które już istniały w systemie Windows, Instrumentacji zarządzania Windows, .NET Framework i innym oprogramowaniu. Polecenia cmdlet programu PowerShell „owijają” istniejącą funkcjonalność. Celem tej taktyki jest zapewnienie przyjaznego dla administratora, bardziej spójnego interfejsu między administratorami i szerokiej gamy podstawowych funkcji. Dzięki PowerShell administrator nie musi znać .NET, WMI ani kodowania interfejsu API niskiego poziomu i zamiast tego może skupić się na korzystaniu z poleceń cmdlet udostępnianych przez PowerShell. W związku z tym PowerShell tworzy niewiele nowych funkcji, zamiast tego koncentrując się na tym, aby istniejąca funkcjonalność była bardziej dostępna dla określonej grupy odbiorców.

Gramatyka

Programiści PowerShell oparli podstawową gramatykę narzędzia na gramatyce POSIX 1003.2 KornShell .

Jednak na język PowerShell wpłynęły również PHP , Perl i wiele innych istniejących języków.

Nazwane polecenia

Windows PowerShell może wykonywać cztery rodzaje nazwanych poleceń:

  • cmdlety ( programy .NET Framework przeznaczone do interakcji z PowerShell)
  • Skrypty PowerShell (pliki z przyrostkiem .ps1)
  • Funkcje PowerShell
  • Samodzielne programy wykonywalne

Jeśli polecenie jest samodzielnym programem wykonywalnym, PowerShell uruchamia go w osobnym procesie ; jeśli jest to polecenie cmdlet, jest wykonywane w procesie PowerShell. PowerShell udostępnia interaktywny interfejs wiersza polecenia , w którym można wprowadzać polecenia i wyświetlać ich dane wyjściowe. Interfejs użytkownika oferuje konfigurowalne uzupełnianie zakładek . PowerShell umożliwia tworzenie aliasów dla poleceń cmdlet, które PowerShell tłumaczy tekstowo na wywołania oryginalnych poleceń. PowerShell obsługuje zarówno nazwane, jak i pozycyjne parametry poleceń. Podczas wykonywania polecenia cmdlet zadanie powiązania wartości argumentu z parametrem jest wykonywane przez sam program PowerShell, ale w przypadku zewnętrznych plików wykonywalnych argumenty są analizowane przez zewnętrzny plik wykonywalny niezależnie od interpretacji programu PowerShell.

Rozszerzony system typu

PowerShell Extended Type System ( ETS ) jest oparty na systemie typów .NET, ale z rozszerzoną semantyką (na przykład propertySets i rozszerzalności innych firm). Na przykład umożliwia tworzenie różnych widoków obiektów, eksponując tylko podzbiór pól danych, właściwości i metod, a także określając niestandardowe zachowanie formatowania i sortowania. Widoki te są mapowane na oryginalny obiekt za pomocą plików konfiguracyjnych opartych na XML .

Polecenia cmdlet

Polecenia cmdlet to wyspecjalizowane polecenia w środowisku PowerShell, które implementują określone funkcje. Są to natywne polecenia w stosie PowerShell. Polecenia cmdlet są zgodne ze wzorcem nazewnictwa Verb - Noun , takim jak Get-ChildItem , co sprawia, że ​​jest to samodokumentujący kod . Polecenia cmdlet wyprowadzają swoje wyniki jako obiekty i mogą również odbierać obiekty jako dane wejściowe, dzięki czemu nadają się do użycia jako odbiorcy w potoku. Jeśli polecenie cmdlet wyprowadza wiele obiektów, każdy obiekt w kolekcji jest przekazywany przez cały potok przed przetworzeniem następnego obiektu.

Polecenia cmdlet to wyspecjalizowane klasy .NET , które środowisko uruchomieniowe programu PowerShell tworzy i wywołuje w czasie wykonywania . Polecenia cmdlet pochodzą z Cmdletlub z PSCmdlet, przy czym te ostatnie są używane, gdy polecenie cmdlet wymaga interakcji ze środowiskiem uruchomieniowym programu PowerShell. Te klasy bazowe określić pewne sposoby - BeginProcessing(), ProcessRecord()i EndProcessing()- co zastępuje wdrożeniowe cmdlet, aby zapewnić funkcjonalność. Za każdym razem, gdy uruchamiane jest polecenie cmdlet, PowerShell wywołuje te metody w sekwencji, z ProcessRecord()wywoływaniem, jeśli otrzyma dane wejściowe potoku. Jeśli kolekcja obiektów jest przesyłana potokowo, metoda jest wywoływana dla każdego obiektu w kolekcji. Klasa implementująca cmdlet musi mieć jeden atrybut .NET – CmdletAttribute– który określa czasownik i rzeczownik, które składają się na nazwę cmdletu. Wspólne czasowniki są podane jako wyliczenie .

Jeśli polecenie cmdlet odbiera dane wejściowe potoku lub dane wejściowe parametrów wiersza polecenia, w klasie musi istnieć odpowiednia właściwość z implementacją mutatora . PowerShell wywołuje mutator z wartością parametru lub danymi wejściowymi potoku, który jest zapisywany przez implementację mutatora w zmiennych klas. Do tych wartości odwołują się następnie metody realizujące funkcjonalność. Właściwości mapowane na parametry wiersza polecenia są oznaczone ParameterAttributei są ustawiane przed wywołaniem BeginProcessing(). Te, które są mapowane na wejście potoku, są również flankowane przez ParameterAttribute, ale z ValueFromPipelineustawionym parametrem atrybutu.

Implementacja tych klas poleceń cmdlet może odwoływać się do dowolnego interfejsu API .NET i może być w dowolnym języku .NET . Ponadto program PowerShell udostępnia niektóre interfejsy API, takie jak , który służy do uzyskiwania dostępu do funkcji specyficznych dla programu PowerShell, takich jak zapisywanie obiektów wynikowych w potoku. Polecenia cmdlet mogą korzystać bezpośrednio z interfejsów API dostępu do danych platformy .NET lub z infrastruktury PowerShell dostawców PowerShell , która umożliwia adresowanie magazynów danych przy użyciu unikalnych ścieżek . Magazyny danych są udostępniane za pomocą liter dysków i zawartych w nich hierarchii, adresowanych jako katalogi. Program Windows PowerShell jest dostarczany z dostawcami systemu plików , rejestru , magazynu certyfikatów , a także przestrzeni nazw dla aliasów poleceń, zmiennych i funkcji. Program Windows PowerShell zawiera również różne polecenia cmdlet do zarządzania różnymi systemami Windows , w tym systemem plików , lub używania Instrumentacji zarządzania Windows do kontrolowania składników systemu Windows . Inne aplikacje mogą rejestrować polecenia cmdlet w programie PowerShell, umożliwiając w ten sposób zarządzanie nimi, a jeśli zawierają dowolny magazyn danych (na przykład bazę danych), mogą również dodawać określonych dostawców. WriteObject()

Liczba poleceń cmdlet zawartych w podstawowej instalacji PowerShell generalnie wzrasta z każdą wersją:

Wersja Polecenia cmdlet
Windows PowerShell 1.0 129
Windows PowerShell 2.0 632
Windows PowerShell 3.0 około 1000
Windows PowerShell 4.0 ?
Windows PowerShell 5.0 około 1300
Windows PowerShell 5.1 1586
PowerShell rdzeń 6.0 ?
PowerShell rdzeń 6.1 ?
PowerShell rdzeń 6.2 ?
PowerShell 7.0 1507
PowerShell 7.1 ?

Polecenia cmdlet można dodawać do powłoki za pomocą przystawek (przestarzałe w wersji 2) i modułów; użytkownicy nie są ograniczeni do poleceń cmdlet zawartych w podstawowej instalacji programu PowerShell.

Rurociąg

PowerShell implementuje koncepcję potoku , która umożliwia przesyłanie danych wyjściowych jednego polecenia cmdlet do innego polecenia cmdlet jako danych wejściowych. Na przykład dane wyjściowe polecenia Get-Processcmdlet mogą być przesyłane potokiem do funkcji Where-Objectfiltrowania dowolnego procesu, który ma mniej niż 1 MB pamięci stronicowanej , a następnie do polecenia Sort-Objectcmdlet (np. w celu posortowania obiektów według liczby uchwytów), a na końcu do polecenia Select-Objectcmdlet aby wybrać tylko pierwsze dziesięć procesów na podstawie liczby uchwytów.

Podobnie jak w przypadku potoków Unix , potoki PowerShell mogą konstruować złożone polecenia, używając |operatora do łączenia etapów. Jednak potok programu PowerShell różni się od potoków systemu Unix tym, że etapy są wykonywane w środowisku uruchomieniowym programu PowerShell, a nie jako zestaw procesów koordynowanych przez system operacyjny . Ponadto ustrukturyzowane obiekty .NET, a nie strumienie bajtów , są przekazywane z jednego etapu do następnego. Korzystanie z obiektów i wykonywanie etapów w środowisku uruchomieniowym programu PowerShell eliminuje potrzebę serializacji struktur danych lub wyodrębniania ich przez jawne analizowanie danych wyjściowych tekstu. Obiekt może również symbolizować pewne funkcje, że prace nad zawartymi danymi, które stają się dostępne komendy biorcy do użytku. W przypadku ostatniego polecenia cmdlet w potoku program PowerShell automatycznie przesyła swój obiekt wyjściowy do polecenia Out-Defaultcmdlet, który przekształca obiekty w strumień obiektów formatu, a następnie renderuje je na ekranie.

Ponieważ wszystkie obiekty programu PowerShell są obiektami .NET, współużytkują .ToString()metodę, która pobiera tekstową reprezentację danych w obiekcie. Ponadto program PowerShell umożliwia określenie definicji formatowania, dzięki czemu tekstową reprezentację obiektów można dostosować, wybierając elementy danych do wyświetlenia i w jaki sposób. Jednak w celu zachowania zgodności z poprzednimi wersjami , jeśli zewnętrzny plik wykonywalny jest używany w potoku, odbiera strumień tekstowy reprezentujący obiekt, zamiast bezpośrednio integrować się z systemem typu PowerShell.

Skrypty

Program Windows PowerShell zawiera dynamicznie typowany język skryptowy, który może bezwzględnie implementować złożone operacje przy użyciu poleceń cmdlet . Język skryptowy obsługuje zmienne, funkcje, rozgałęzienia ( if-then-else), pętle ( while, do, fori foreach), ustrukturyzowaną obsługę błędów/wyjątków oraz domknięcia / wyrażenia lambda , a także integrację z .NET. Zmienne w skryptach PowerShell mają przedrostek $. Zmiennym można przypisać dowolną wartość, w tym dane wyjściowe poleceń cmdlet. Łańcuchy mogą być ujęte w cudzysłowy pojedyncze lub cudzysłowy: podczas używania cudzysłowów, zmienne zostaną rozwinięte, nawet jeśli znajdują się w cudzysłowie. Ujęcie ścieżki do pliku w nawiasach klamrowych poprzedzonych znakiem dolara (jak w ${C:\foo.txt}) tworzy odwołanie do zawartości pliku. Jeśli jest używany jako L-wartość , wszystko, co do niego przypisane, zostanie zapisane w pliku. W przypadku użycia jako wartość R , zawartość pliku zostanie odczytana. Jeśli obiekt jest przypisany, jest serializowany przed zapisaniem.

Dostęp do członków obiektów można uzyskać za pomocą .notacji, tak jak w składni języka C#. PowerShell udostępnia zmienne specjalne, takie jak $args, która jest tablicą wszystkich argumentów wiersza polecenia przekazanych do funkcji z wiersza polecenia, oraz $_, która odwołuje się do bieżącego obiektu w potoku. PowerShell udostępnia również tablice i tablice asocjacyjne . Język skryptowy PowerShell również natychmiast ocenia wyrażenia arytmetyczne wprowadzone w wierszu polecenia i analizuje typowe skróty, takie jak GB, MB i KB.

Używając functionsłowa kluczowego, PowerShell zapewnia tworzenie funkcji. Prosta funkcja ma następujący ogólny wygląd:

function name ([Type]$Param1, [Type]$Param2)
{
  # Instructions
}

Jednak PowerShell pozwala na zaawansowane funkcje, które obsługują parametry nazwane, parametry pozycyjne, parametry przełączników i parametry dynamiczne.

function Verb-Noun
{
  param (
    # Definition of static parameters
  )
  dynamicparam {
    # Definition of dynamic parameters
  }
  begin {
    # Set of instruction to run at the start of the pipeline
  }
  process {
    # Main instruction sets, ran for each item in the pipeline
  }
  end {
    # Set of instruction to run at the end of the pipeline
  }
}

Zdefiniowana funkcja jest wywoływana w jednej z następujących form:

name value1 value2
Verb-Noun -Param1 value1 -Param2 value2

PowerShell umożliwia wywoływanie dowolnych statycznych metod platformy .NET, podając ich przestrzenie nazw ujęte w nawiasy kwadratowe ( []), a następnie używając pary dwukropków ( ::) do wskazania metody statycznej. Na przykład:

[Console]::WriteLine("PowerShell")

Istnieją dziesiątki sposobów tworzenia obiektów w PowerShell. Po utworzeniu można uzyskać dostęp do właściwości i metod instancji obiektu za pomocą .notacji.

PowerShell akceptuje ciągi , zarówno surowe, jak i ze znakami ucieczki . Ciąg ujęty w pojedyncze cudzysłowy jest ciągiem nieprzetworzonym, podczas gdy ciąg ujęty między podwójnymi cudzysłowami jest ciągiem ze znakami ucieczki. PowerShell traktuje cudzysłowy proste i kręcone jako równoważne.

Poniższa lista znaków specjalnych jest obsługiwana przez PowerShell:

Znaki specjalne PowerShell
Sekwencja Oznaczający
`0 Zero
„a” Alarm
b Backspace
e Ucieczka
f Kanał formularza
`n Nowa linia
`r` Zwrot karetki
`t` Zakładka pozioma
`u{x} Sekwencja ucieczki Unicode
`v` Zakładka pionowa
--% Traktuj każdą postać od tego momentu dosłownie

W przypadku obsługi błędów program PowerShell udostępnia mechanizm obsługi wyjątków oparty na platformie .NET . W przypadku błędów Exceptionwyrzucane są obiekty zawierające informacje o błędzie ( obiekt), które są przechwycone za pomocą try ... catchkonstrukcji (choć trapkonstrukcja również jest obsługiwana). PowerShell można skonfigurować tak, aby dyskretnie wznawiał wykonywanie, bez faktycznego zgłaszania wyjątku; można to zrobić za pomocą pojedynczego polecenia, pojedynczej sesji lub bez przerwy.

Skrypty napisane przy użyciu programu PowerShell mogą być utrwalane między sesjami w .ps1pliku lub .psm1pliku (ten ostatni służy do implementacji modułu). Później można użyć całego skryptu lub poszczególnych funkcji w skrypcie. Skrypty i funkcje działają analogicznie do poleceń cmdlet, ponieważ mogą być używane jako polecenia w potokach, a parametry mogą być z nimi powiązane. Obiekty potoku można bezproblemowo przekazywać między funkcjami, skryptami i poleceniami cmdlet. Aby zapobiec niezamierzonemu uruchomieniu skryptów, wykonywanie skryptów jest domyślnie wyłączone i musi być włączone jawnie. Włączenie skryptów może odbywać się na poziomie systemu, użytkownika lub sesji. Skrypty programu PowerShell można podpisywać w celu zweryfikowania ich integralności i podlegają Code Access Security .

Język skryptowy programu PowerShell obsługuje notację prefiksów binarnych podobną do notacji naukowej obsługiwanej przez wiele języków programowania z rodziny C.

Hosting

Można również użyć PowerShell osadzonego w aplikacji zarządzającej, która wykorzystuje środowisko uruchomieniowe PowerShell do implementacji funkcji zarządzania. W tym celu PowerShell udostępnia zarządzany interfejs API hostingu . Poprzez API, aplikacja może instancji runspace (jeden instancji środowiska wykonawczego PowerShell), która biegnie w aplikacji procesu i jest narażony jako Runspaceobiekt. Stan obszaru działania jest umieszczony w SessionStateobiekcie. Po utworzeniu obszaru działania środowisko uruchomieniowe programu Windows PowerShell inicjuje wystąpienie, w tym inicjuje dostawców i wylicza polecenia cmdlet, a następnie odpowiednio aktualizuje SessionStateobiekt. Następnie obszar Runspace musi zostać otwarty w celu przetwarzania synchronicznego lub przetwarzania asynchronicznego. Następnie może być używany do wykonywania poleceń.

Aby wykonać polecenie, należy utworzyć potok (reprezentowany przez Pipelineobiekt) i skojarzyć go z obszarem działania. Obiekt potoku jest następnie wypełniany poleceniami cmdlet, które tworzą potok. W przypadku operacji sekwencyjnych (jak w skrypcie PowerShell) obiekt Pipeline jest tworzony dla każdej instrukcji i zagnieżdżany w innym obiekcie Pipeline. Kiedy rurociąg jest stworzony, Windows PowerShell wywołuje procesor rurociąg, który rozwiązuje apletów poleceń do swoich zespołów (The procesor poleceń ) i dodaje odniesienie do nich do rurociągu i przekierowuje je InputPipe, OutputPipei ErrorOutputPipeobiekty, do reprezentowania związku z rurociąg. Typy są weryfikowane, a parametry wiązane za pomocą odbicia . Po skonfigurowaniu potoku host wywołuje Invoke()metodę uruchamiania poleceń lub jej asynchroniczny odpowiednik, InvokeAsync(). Jeśli potok ma polecenie Write-Hostcmdlet na końcu potoku, zapisuje wynik na ekranie konsoli. Jeśli nie, wyniki są przekazywane do hosta, który może zastosować dalsze przetwarzanie lub wyświetlić sam wynik.

Microsoft Exchange Server 2007 korzysta z interfejsów API hostingu, aby zapewnić GUI zarządzania. Każda operacja uwidoczniona w graficznym interfejsie użytkownika jest mapowana na sekwencję poleceń programu PowerShell (lub potoków). Host tworzy potok i wykonuje je. W rzeczywistości sama interaktywna konsola PowerShell jest hostem PowerShell, który interpretuje skrypty wprowadzone w wierszu poleceń i tworzy niezbędne Pipelineobiekty oraz je wywołuje.

Konfiguracja żądanego stanu

DSC pozwala na deklaratywne określenie sposobu konfiguracji środowiska oprogramowania.

Po uruchomieniu konfiguracji DSC zapewni, że system uzyska stan opisany w konfiguracji. Konfiguracje DSC są idempotentne. Configuration Manager Local (LCM) cyklicznie odpytuje system wykorzystując przepływ sterowania opisany przez zasobów (nadrzędne kawałki DSC), aby upewnić się, że stan konfiguracji jest zachowana.

Wersje

Początkowo używający nazwy kodowej „Monad”, PowerShell został po raz pierwszy pokazany publicznie na konferencji Professional Developers Conference w październiku 2003 r. w Los Angeles. Wszystkie główne wydania są nadal obsługiwane, a każda główna wersja jest kompatybilna wstecz z poprzednimi wersjami.

Windows PowerShell 1.0

Sesja Windows PowerShell 1.0 przy użyciu konsoli Windows

PowerShell 1.0 został wydany w listopadzie 2006 roku dla systemu Windows XP z dodatkiem SP2 , Windows Server 2003 z dodatkiem SP1 i Windows Vista . Jest to opcjonalny składnik systemu Windows Server 2008 .

Windows PowerShell 2.0

Windows PowerShell ISE v2.0 w systemie Windows 7 , zintegrowane środowisko programistyczne dla skryptów PowerShell.

Program PowerShell 2.0 jest zintegrowany z systemami Windows 7 i Windows Server 2008 R2 i został wydany dla systemów Windows XP z dodatkiem Service Pack 3, Windows Server 2003 z dodatkiem Service Pack 2 i Windows Vista z dodatkiem Service Pack 1.

Program PowerShell v2 zawiera zmiany w języku skryptowym i interfejsie API hostingu, a także zawiera ponad 240 nowych poleceń cmdlet.

Nowe funkcje PowerShell 2.0 obejmują:

  • PowerShell remoting : za pomocą WS-Management program PowerShell 2,0 umożliwia wywoływanie skryptów i poleceń cmdlet na komputerze zdalnym lub dużym zestawie komputerów zdalnych.
  • Zadania w tle : Nazywane również PSJob , umożliwia asynchroniczne wywoływanie sekwencji poleceń (skryptu) lub potoku. Zadania mogą być uruchamiane na komputerze lokalnym lub na wielu komputerach zdalnych. Interaktywne polecenie cmdlet w PSJob blokuje wykonywanie zadania do momentu dostarczenia danych wejściowych użytkownika.
  • Transakcje : Włącz polecenie cmdlet, a deweloperzy mogą wykonywać operacje transakcyjne . Program PowerShell 2,0 zawiera polecenia cmdlet transakcji do uruchamiania, zatwierdzania i wycofywania PSTransaction, a także funkcje zarządzania transakcją i kierowania jej do uczestniczących operacji cmdlet i dostawcy. Dostawca PowerShell Registry obsługuje transakcje.
  • Funkcje zaawansowane : są to polecenia cmdlet napisane przy użyciu języka skryptowego PowerShell. Ta funkcja, początkowo nazywana „cmdletami skryptu”, została później przemianowana na „funkcje zaawansowane”.
  • SteppablePipelines : Pozwala użytkownikowi na kontrolę, kiedy BeginProcessing(), ProcessRecord()i EndProcessing()funkcje w apletu polecenia są nazywane.
  • Moduły : umożliwia deweloperom i administratorom skryptów organizowanie i partycjonowanie skryptów PowerShell w samodzielnych jednostkach wielokrotnego użytku. Kod z modułu jest wykonywany we własnym, samodzielnym kontekście i nie wpływa na stan poza modułem. Moduły mogą definiować ograniczone środowisko uruchomieniowe za pomocą skryptu. Mają trwałe państwo, a także członków publicznych i prywatnych.
  • Język danych : specyficzny dla domeny podzbiór języka skryptowego programu PowerShell, który umożliwia oddzielenie definicji danych od skryptów i umożliwia importowanie zlokalizowanych zasobów ciągów do skryptu w czasie wykonywania ( internacjonalizacja skryptów ).
  • Debugowanie skryptów : umożliwia ustawienie punktów przerwania w skrypcie lub funkcji PowerShell. Punkty przerwania można ustawić na liniach, liniach i kolumnach, poleceniach oraz dostępie do odczytu lub zapisu zmiennych. Zawiera zestaw poleceń cmdlet do kontrolowania punktów przerwania za pomocą skryptu.
  • Zdarzenia : ta funkcja umożliwia nasłuchiwanie, przekazywanie i działanie na zdarzenia związane z zarządzaniem i systemowymi. Obsługa zdarzeń umożliwia hostom programu PowerShell powiadamianie o zmianach stanu w zarządzanych przez nich jednostkach. Umożliwia także skryptom PowerShell subskrybowanie obiektów ObjectEvents , PSEvents i WmiEvents oraz przetwarzanie ich synchronicznie i asynchronicznie.
  • Windows PowerShell Integrated Scripting Environment (ISE) : PowerShell 2.0 zawiera host PowerShell oparty na graficznym interfejsie użytkownika, który zapewnia zintegrowany debuger, podświetlanie składni , uzupełnianie kart i do 8 konsol PowerShell z obsługą Unicode (obszarów uruchomieniowych) w interfejsie użytkownika z kartami, a także możliwość do uruchomienia tylko wybranych części w skrypcie.
  • Sieciowy transfer plików : natywna obsługa priorytetowego, dławionego i asynchronicznego transferu plików między komputerami przy użyciu usługi inteligentnego transferu w tle (BITS).
  • Nowe polecenia cmdlet : Including Out-GridView, które wyświetlają dane tabelaryczne w obiekcie WPF GridView , w systemach, które na to zezwalają, oraz jeśli ISE jest zainstalowane i włączone.
  • Nowi operatorzy : -Split, -Join, i splatting ( @) operatorzy.
  • Obsługa wyjątków z Try-Catch-Finally : w przeciwieństwie do innych języków platformy .NET umożliwia to wiele typów wyjątków dla jednego bloku catch.
  • Nestable Here-Strings : PowerShell Here-Strings zostały ulepszone i mogą być teraz zagnieżdżane.
  • Komentarze blokowe : program PowerShell 2,0 obsługuje komentarze blokowe przy użyciu <#i #>jako ograniczników.
  • Nowe interfejsy API : nowe interfejsy API obejmują przekazywanie hostowi większej kontroli nad analizatorem składni PowerShell i środowiskiem wykonawczym, tworzenie i zarządzanie kolekcją obszarów uruchomieniowych ( RunspacePools), a także możliwość tworzenia zastrzeżonych obszarów uruchomieniowych, które umożliwiają wywoływanie tylko skonfigurowanego podzbioru programu PowerShell . Nowe interfejsy API obsługują również udział w transakcji zarządzanej przez PowerShell

Windows PowerShell 3.0

Program PowerShell 3.0 jest zintegrowany z systemem Windows 8 i Windows Server 2012 . Firma Microsoft udostępniła również program PowerShell 3.0 dla systemu Windows 7 z dodatkiem Service Pack 1, systemu Windows Server 2008 z dodatkiem Service Pack 1 i systemu Windows Server 2008 R2 z dodatkiem Service Pack 1.

Program PowerShell 3.0 jest częścią większego pakietu Windows Management Framework 3.0 (WMF3), który zawiera również usługę WinRM do obsługi komunikacji zdalnej. Firma Microsoft wydała kilka wersji programu Community Technology Preview WMF3. Wczesna wersja Community Technology Preview 2 (CTP 2) systemu Windows Management Framework 3.0 została wydana 2 grudnia 2011 r. System Windows Management Framework 3.0 został ogólnie udostępniony w grudniu 2012 r. i jest domyślnie dołączany do systemów Windows 8 i Windows Server 2012.

Nowe funkcje w PowerShell 3.0 obejmują:

  • Zaplanowane zadania : zadania można zaplanować, aby były uruchamiane o określonej godzinie i dacie, korzystając z infrastruktury Harmonogramu zadań systemu Windows .
  • Łączność sesji : sesje można rozłączyć i ponownie połączyć. Sesje zdalne stały się bardziej odporne na tymczasowe awarie sieci.
  • Ulepszone pisanie kodu : dodano uzupełnianie kodu (IntelliSense) i fragmenty kodu . PowerShell ISE umożliwia użytkownikom używanie okien dialogowych do wypełniania parametrów poleceń cmdlet programu PowerShell.
  • Obsługa delegowania : zadania administracyjne można delegować do użytkowników, którzy nie mają uprawnień do tego typu zadań, bez nadawania im dodatkowych uprawnień wieczystych.
  • Aktualizacja pomocy : Dokumentacja pomocy może być aktualizowana za pomocą polecenia Update-Help.
  • Automatyczne wykrywanie modułu : Moduły są ładowane niejawnie za każdym razem, gdy wywoływane jest polecenie z tego modułu. Uzupełnianie kodu działa również dla rozładowanych modułów.
  • Nowe polecenia : Dodano dziesiątki nowych modułów, w tym funkcjonalność do zarządzania dyskami get-WmiObject win32_logicaldisk, woluminami, zaporami, połączeniami sieciowymi i drukarkami, które wcześniej były wykonywane przez WMI.

Windows PowerShell 4.0

Program PowerShell 4.0 jest zintegrowany z systemem Windows 8.1 i systemem Windows Server 2012 R2 . Microsoft udostępnił także PowerShell 4.0 dla Windows 7 SP1 , Windows Server 2008 R2 SP1 i Windows Server 2012 .

Nowe funkcje w PowerShell 4.0 obejmują:

  • Konfiguracja żądanego stanu : deklaratywne rozszerzenia języka i narzędzia umożliwiające wdrażanie i zarządzanie danymi konfiguracyjnymi dla systemów korzystających ze standardów zarządzania DMTF i protokołu WS-Management
  • Nowa domyślna zasada wykonywania : na serwerach Windows domyślną zasadą wykonywania jest teraz RemoteSigned.
  • Save-Help : Pomoc można teraz zapisać dla modułów zainstalowanych na zdalnych komputerach.
  • Ulepszone debugowanie : debuger obsługuje teraz przepływy pracy debugowania, zdalne wykonywanie skryptów i zachowywanie sesji debugowania w ramach ponownych połączeń sesji programu PowerShell.
  • - Przełącznik PipelineVariable : nowy, wszechobecny parametr, który udostępnia bieżący obiekt potoku jako zmienną do celów programistycznych
  • Diagnostyka sieci do zarządzania fizycznymi i zwirtualizowanymi przełącznikami sieciowymi Hyper-V
  • Składnia metod Where i ForEach zapewnia alternatywną metodę filtrowania i iterowania obiektów.

Windows PowerShell 5.0

Ikona PowerShell 5.0

Windows Management Framework (WMF) 5.0 RTM, który zawiera PowerShell 5.0, został ponownie wydany w Internecie 24 lutego 2016 r., po pierwszym wydaniu z poważnym błędem.

Najważniejsze cechy obejmowały:

  • Nowe class słowo kluczowe, które tworzy klasy do programowania obiektowego
  • Nowe enumsłowo kluczowe, które tworzy wyliczenia
  • OneGetcmdlety do obsługi menedżera pakietów Chocolatey
  • Rozszerzenie obsługi zarządzania przełącznikami na przełączniki sieciowe warstwy 2 .
  • Debugowanie zadań w tle programu PowerShell i wystąpień programu PowerShell hostowanych w innych procesach (z których każdy jest nazywany „przestrzenią uruchomieniową”)
  • Konfiguracja żądanego stanu (DSC) Local Configuration Manager (LCM) w wersji 2.0
  • Częściowe konfiguracje DSC
  • Metakonfiguracje DSC Local Configuration Manager
  • Tworzenie zasobów DSC z wykorzystaniem klas PowerShell

Windows PowerShell 5.1

Został wydany wraz z rocznicową aktualizacją systemu Windows 10 2 sierpnia 2016 r. oraz w systemie Windows Server 2016 . PackageManagement obsługuje teraz serwery proxy, PSReadLine obsługuje teraz ViMode, a także dodano dwa nowe polecenia cmdlet: Get-TimeZone i Set-TimeZone. Moduł LocalAccounts umożliwia dodawanie/usuwanie lokalnych kont użytkowników. Wersja zapoznawcza programu PowerShell 5.1 została wydana dla systemów Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012 i Windows Server 2012 R2 16 lipca 2016 r. i została wydana 19 stycznia 2017 r.

PowerShell 5.1 to pierwsza wersja, która pojawiła się w dwóch edycjach „Desktop” i „Core”. Wersja „Desktop” jest kontynuacją tradycyjnego programu Windows PowerShell, który działa na stosie .NET Framework. Wersja „Core” działa na platformie .NET Core i jest dołączona do systemu Windows Server 2016 Nano Server. W zamian za mniejsze rozmiary w tym ostatnim brakuje niektórych funkcji, takich jak polecenia cmdlet do zarządzania schowkiem lub dołączania komputera do domeny, polecenia cmdlet WMI w wersji 1, polecenia cmdlet dziennika zdarzeń i profile. Była to ostateczna wersja PowerShell stworzona wyłącznie dla systemu Windows.

Rdzeń PowerShell 6

PowerShell Core 6.0 został po raz pierwszy ogłoszony 18 sierpnia 2016 r., kiedy Microsoft zaprezentował PowerShell Core i swoją decyzję o uczynieniu produktu międzyplatformowym , niezależnym od systemu Windows, wolnym i otwartym. Osiągnął ogólną dostępność 10 stycznia 2018 r. dla systemów Windows, macOS i Linux . Ma własny cykl pomocy technicznej i jest zgodny z zasadami cyklu życia firmy Microsoft wprowadzonymi w systemie Windows 10: obsługiwana jest tylko najnowsza wersja programu PowerShell Core. Microsoft spodziewa się wypuszczać jedną mniejszą wersję dla PowerShell Core 6.0 co sześć miesięcy.

Najważniejszą zmianą w tej wersji PowerShell jest rozszerzenie na inne platformy. Dla administratorów systemu Windows ta wersja programu PowerShell nie zawierała żadnych ważnych nowych funkcji. W wywiadzie udzielonym społeczności 11 stycznia 2018 r. zespół PowerShell został poproszony o wymienienie 10 najbardziej ekscytujących rzeczy, które mogą się przydarzyć specjalistom IT ds. Windows, którzy dokonają migracji z Windows PowerShell 5.1 do PowerShell Core 6.0; w odpowiedzi Angel Calvo z Microsoftu mógł wymienić tylko dwa: wieloplatformowy i open-source.

Według firmy Microsoft jedną z nowych funkcji programu PowerShell 6.1 jest „Zgodność z ponad 1900 istniejącymi poleceniami cmdlet w systemach Windows 10 i Windows Server 2019 ”. Jednak w pełnej wersji dziennika zmian nie można znaleźć żadnych szczegółów tych poleceń cmdlet. Microsoft twierdzi później, że liczba ta była niewystarczająca, ponieważ PowerShell Core nie zdołał zastąpić Windows PowerShell 5.1 i uzyskać przyczepność w systemie Windows. Był jednak popularny w Linuksie.

Program PowerShell Core 6,2 koncentruje się głównie na ulepszeniach wydajności, poprawkach błędów oraz mniejszych ulepszeniach poleceń cmdlet i języka, które poprawiły produktywność deweloperów.

PowerShell 7

PowerShell 7 zastępuje produkty PowerShell Core 6.x, a także Windows PowerShell 5.1, który jest ostatnią obsługiwaną wersją Windows PowerShell. Podczas prac rozwojowych skupiono się na uczynieniu PowerShell 7 realnym zamiennikiem Windows PowerShell 5.1, tj. prawie równorzędnym z Windows PowerShell pod względem kompatybilności z modułami dostarczanymi z systemem Windows.

Nowe funkcje w PowerShell 7 obejmują:

  • -ParallelPrzełącznik dla ForEach-Objectcmdlet do pomocy uchwytu przetwarzania równoległego
  • Prawie równorzędny z Windows PowerShell pod względem zgodności z wbudowanymi modułami systemu Windows
  • Nowy widok błędu
  • Polecenie Get-Errorcmdlet
  • Operatory łączenia potoków ( &&i ||), które umożliwiają warunkowe wykonanie następnego polecenia cmdlet w potoku
  • Operator ?: dla operacji trójskładnikowych
  • ??=Operator, że tylko przypisuje wartość do zmiennej, gdy istniejąca wartość zmiennej jest zerowa
  • ??Operator zerowej koalescencyjny
  • Wieloplatformowy Invoke-DscResource(eksperymentalny)
  • Zwrot polecenia Out-GridViewcmdlet
  • Powrót -ShowWindowprzełącznika dlaGet-Help

Porównanie cmdletów z podobnymi poleceniami

Poniższa tabela zawiera wybór poleceń cmdlet dostarczanych z programem PowerShell, zwracając uwagę na podobne polecenia w innych dobrze znanych interpreterach wiersza polecenia. Wiele z tych podobnych poleceń jest gotowych do użycia, zdefiniowanych jako aliasy w programie PowerShell, co ułatwia rozpoczęcie pracy osobom zaznajomionym z innymi popularnymi powłokami.

Porównanie cmdletów PowerShell z wewnętrznymi i zewnętrznymi poleceniami innych interpreterów wiersza poleceń
PowerShell (polecenie cmdlet) PowerShell (alias) Wiersz polecenia systemu Windows Powłoka uniksowa Opis
Get-ChildItem gci, reż, ls reż ls Wyświetla listę wszystkich plików i folderów w bieżącym lub podanym folderze
Połączenie testowe świst świst świst Wysyła żądania echa ICMP do określonej maszyny z bieżącego komputera lub instruuje inny komputer, aby to zrobił
Pobierz zawartość gc, typ, kot rodzaj Kot Pobiera zawartość pliku
Pobierz polecenie gcm pomoc , gdzie typ , który , compgen Wyświetla listę dostępnych poleceń i pobiera ścieżkę poleceń
Uzyskać pomoc pomóż, człowieku Wsparcie a propos , człowieku Wyświetla dokumentację polecenia na konsoli
Wyczyść-host cls, jasne cls jasne Czyści ekran
Kopiuj element cpi, kopia, cp kopiować , xcopy , robocopy cp Kopiuje pliki i foldery do innej lokalizacji
Przenieś-przedmiot mi, ruszaj się, mv ruszaj się mv Przenosi pliki i foldery do nowej lokalizacji
Usuń przedmiot ri, del, wymaż, rmdir, rd, rm del , usuń , rmdir , rd rm , rmdir Usuwa pliki lub foldery
Zmień nazwę elementu rni, ren, mv ren , zmień nazwę mv Zmienia nazwę pojedynczego pliku, folderu, dowiązania twardego lub dowiązania symbolicznego
Uzyskaj lokalizację gl, cd, pwd Płyta CD pwd Wyświetla ścieżkę roboczą (bieżący folder)
Pop-Lokalizacja popd popd popd Zmienia ścieżkę roboczą do lokalizacji ostatnio wepchniętej na stos
Push-Lokalizacja pchnął pchnął pchnął Przechowuje ścieżkę roboczą na stosie
Ustaw położenie sl, cd, chdir cd , chdir Płyta CD Zmienia ścieżkę roboczą
Trójnik trójnik Nie dotyczy trójnik Potoki wejściowe do pliku lub zmiennej, przekazujące dane wejściowe potokiem
Zapis-wyjście echo, pisać Echo Echo Wypisuje ciągi znaków lub inne obiekty na standardowe wyjście
Pobierz-Proces gps, ps tlist, tasklist ps Wyświetla listę wszystkich uruchomionych procesów
Zatrzymaj proces spps, zabić zabić , taskkill zabić Zatrzymuje uruchomiony proces
Wybierz ciąg sls findstr znajdź , grep Drukuje linie pasujące do wzoru
Ustaw-zmienna sv, zestaw ustawić env, eksport, zestaw, setenv Tworzy lub zmienia zawartość zmiennej środowiskowej
Invoke-WebRequest iwr, zwijanie, wget kędzior wget , curl Pobiera zawartość ze strony internetowej w Internecie

Uwagi

Rozszerzenia nazw plików

Rozbudowa Opis
.ps1 Plik skryptu
.psd1 Plik manifestu modułu; zwykle zawiera moduł skryptu lub moduł binarny
.psm1 Plik modułu skryptu
.dll Plik modułu binarnego zgodny z biblioteką DLL
.ps1xml Format i typ pliku definicji
.xml Zserializowany plik danych zgodny z XML
.psc1 Plik konsoli
.pssc Plik konfiguracyjny sesji
.psrc Plik funkcji ról

Wsparcie aplikacji

Podanie Wersja Polecenia cmdlet Dostawca GUI zarządzania
Wymiana serweru 2007 402 tak tak
Serwer Windows 2008 tak tak Nie
Microsoft SQL Server 2008 tak tak Nie
Microsoft SharePoint 2010 tak tak Nie
Menedżer konfiguracji System Center 2012 R2 400+ tak Nie
Menedżer operacyjny System Center 2007 74 tak Nie
Menedżer maszyny wirtualnej System Center 2007 tak tak tak
Menedżer ochrony danych w System Center 2007 tak Nie Nie
Serwer klastra obliczeniowego systemu Windows 2007 tak tak Nie
Microsoft Transporter Suite dla Lotus Domino 08.02.0012 47 Nie Nie
Microsoft PowerTools dla Open XML 1,0 33 Nie Nie
IBM WebSphere MQ 6.0.2.2 44 Nie Nie
Podstawowe dodatki IoT 74 Nieznany Nieznany
Quest Management Shell dla Active Directory 1,7 95 Nie Nie
Oprogramowanie do operacji specjalnych Specops Command 1,0 tak Nie tak
VMware vSphere PowerCLI 6,5 R1 500+ tak tak
Internetowe usługi informacyjne 7,0 54 tak Nie
Centrum rozwiązywania problemów z systemem Windows 7 6,1 tak Nie tak
Zestaw narzędzi do wdrażania firmy Microsoft 2010 tak tak tak
Zestaw narzędzi NetApp PowerShell 4.2 2000+ tak tak
Harmonogram JAMS – system dostępu i zarządzania zadaniami 5.0 52 tak tak
Automatyzacja interfejsu użytkownika 0,8 432 Nie Nie
Dell Equallogic 3,5 55 Nie Nie
LOGINwykaz 5,8 tak tak tak
SePSX 0.4.1 39 Nie Nie

Alternatywne wdrożenie

Projekt o nazwie Pash , kalambur dotyczący powszechnie znanej powłoki uniksowej " bash ", był reimplementacją programu PowerShell typu open source i międzyplatformową za pośrednictwem platformy Mono . Pash został stworzony przez Igora Moochnicka, napisany w C# i wydany na Powszechnej Licencji Publicznej GNU . Rozwój Pash utknął w 2008 roku, został ponownie uruchomiony na GitHub w 2012 roku, a ostatecznie zakończył się w 2016 roku, kiedy PowerShell został oficjalnie udostępniony jako open source i wieloplatformowy.

Zobacz też

Bibliografia

Dalsza lektura

Zewnętrzne linki