Movatterモバイル変換


[0]ホーム

URL:


Przejdź do zawartości
Wikipediawolna encyklopedia
Szukaj

PowerShell

Z Wikipedii, wolnej encyklopedii
Pomoc:Ponadczasowość
Ten artykuł wymaga modyfikacji na podstawie najświeższych informacji.
Niektóre treści są na pewno lub najprawdopodobniej nieaktualne. Artykuł należy zweryfikować, wskazując wprzypisach źródła informacji.
Dokładniejsze informacje o tym, co należy poprawić, być może znajdują się wdyskusji tego artykułu.
Po wyeliminowaniu niedoskonałości należy usunąć szablon{{Dopracować}} z tego artykułu.
PowerShell
Logo PowerShell
Logo programu
Ilustracja
Zrzut ekranu Windows PowerShell 7.1.5 w Windows Terminal
AutorMicrosoft
Pierwsze wydanie14 listopada2006
Aktualnawersja stabilna7.5.0 (23 stycznia 2025)
Aktualnawersja testowa7.6.0-preview.3 (21 lutego 2025)
Platforma sprzętowax86, x64, ARM
System operacyjnyWindows:10,11,Server 2016,Server 2019,Server 2022;
Linux,Mac OS X
Rodzajinterpreter poleceń
LicencjaMIT
Multimedia w Wikimedia Commons
Strona internetowa

PowerShell (poprzednioWindows PowerShell,Microsoft Shell lubMSH, nazwa kodowaMonad) –interpreter poleceń opracowany przez firmęMicrosoft. Początkowo był to składnik systemuWindows, znany jako Windows PowerShell. Wraz z wprowadzeniem PowerShell Core jest to oprogramowaniewieloplatformowe orazopen-source[1][2][3].

Jest znacznie bardziej rozbudowany w stosunku do wcześniejszych interpreterówCOMMAND.COM icmd.exe, stosowanych wsystemach operacyjnychMS-DOS iMicrosoft Windows. PowerShell został wydany w 2006 roku i jest dostępny dlaWindows XP SP2,Windows Server 2003 i nowszych oraz Linux i OS X. Jest wbudowany wMicrosoft Windows Server 2008 iMicrosoft Windows Server 2012 jako cecha opcjonalna (nieinstalowana automatycznie). Od wersji 2 posiada zintegrowane środowisko skryptowe PowerShell ISE (Integrated Scripting Environment) z graficznym pośrednictwem użytkownika udostępniającym: odpluskwiacz (debuger), wyróżnianie i uzupełnianie tabulatorem składni, maksymalnie 8 konsol programu PowerShell obsługujących kodUnicode z kartami, a także możliwość uruchamiania tylko wybranych fragmentów skryptu.

PowerShell jest zintegrowany z.NET Framework i dostarcza środowisko do wykonywania zadań administracyjnych wykonywanych poleceniamicmdlets.

Od 2008 roku,common criteria (lista warunków, które muszą zostać spełnione) dla wszystkich produktów serwerowychMicrosoft zawiera zarządzanie przez PowerShell. Oznacza to, że przy pomocy interpretera poleceń wykonać można każde działanie administracyjne na każdym współczesnym produkcie. Dzięki temu znacząco ujednolica i upraszcza się skryptowe zarządzanie środowiskiem.

Charakterystyczną cechą PowerShell, odróżniającą go od innych interpreterów poleceń, jest logika obiektowa. Wynikiem każdego polecenia nie jest ciąg znaków na ekranie, aleobiekt określonego typu. W przypadku braku wskazania, co z danym obiektem należy zrobić, część jego właściwości wyświetlana jest na ekranie. Możliwe jest jednak bardziej zaawansowane wykorzystanie metod i właściwości zwróconego obiektu. Przykładowo polecenieGet-ChildItem (lub jegoaliasdir albols) zwraca listę plików i katalogów w bieżącej lokalizacji. Z otrzymanej przezGet-ChildItem|Get-Member listy, widać jednak, że można łatwo zastosować metodęDelete, bądź sięgnąć do właściwościLastAccessTime czyAttributes.

Każda funkcja dostępna przezAPI systemu jest możliwa do wywołania z PowerShell. Oznacza to, że nie ma takiej opcji związanej z zarządzaniem systemem, której nie dałoby się wykonać poprzez skrypt PowerShell.

Projekt

[edytuj |edytuj kod]

Polecenia cmdlet

[edytuj |edytuj kod]

Cmdlety są specjalnymi komendami w środowisku PowerShell, które implementują konkretne funkcje. Są one rodzimymi komendami w stosie PowerShell. Ich nazwy są tworzone na zasadzieCzasownik-Rzeczownik, np.Get-ChildItem, przez co ich nazwa jednocześnie opisuje działanie komend[4]. Cmdlety zwracają rezultaty w postaci obiektów lub ich zbiorów (także w postaci tablic) i mogą opcjonalnie odbierać dane wejściowe w tej formie, czyniąc je odpowiednimi do użycia w roli „odbiorców” w potoku. Gdy jednak PowerShell zezwala na zapisywanie w potoku tablic i innych zbiorów obiektów, cmdlety zawsze przetwarzają obiekty indywidualnie. W przypadku zbiorów obiektów, PowerShell kolejno wywołuje cmdleta na każdym obiekcie ze zbioru[4].

Cmdlety są wyspecjalizowanymiklasami .NET, których instancje są tworzone i wywoływane przez runtime PowerShella w trakcie działania środowiska. Cmdlety wywodzą się zCmdlet lub zPSCmdlet; PSCmdlet była używana, gdy zachodziła konieczność interakcji cmdleta z runtime PowerShella[4]. Te klasy bazowe definiowały konkretne metody -BeginProcessing(),ProcessRecord() orazEndProcessing() – które były przeciążane przez implementację cmdleta w celu zapewnienia funkcjonalności. Gdy tylko cmdlet był uruchamiany, PowerShell kolejno wywoływał te metody, aProcessRecord() była wywoływana, gdy otrzymała dane wejściowe potoku[5]. Jeśli wysłano kolekcję obiektów, metoda jest wywoływana osobno dla każdego z nich. Klasa implementująca Cmdleta musi mieć jedenatrybut .NET -CmdletAttribute – określa on czasownik i rzeczownik, które tworzą nazwę cmdleta. Wspólne czasowniki sąnumerowane[6][7].

Jeśli cmdlet otrzyma dane wejściowe z potoku lub z parametruwiersza poleceń, w klasie musi być odpowiedniawłaściwość, wraz z zaimplementowanym mutatorem. PowerShell wywołuje mutatora poprzez wartość parametru lub przez dane wejściowe potoku, które mutator zapisuje jako zmienne w klasie. Następnie do tych wartości odnoszą się metody, które implementują tę funkcjonalność. Właściwości któremapują się do parametrów wiersza poleceń są oznaczone przezParameterAttribute[8] i zdefiniowane, zanim nastąpi odwołanie do metodyBeginProcessing(). Te, które odnoszą się do danych wejściowych potoku, są również określone przezParameterAttribute, ale mają zdefiniowany parametrValueFromPipeline[9].

Implementacja takich klas cmdletów może odwołać się do dowolnegoAPI w.NET i może być napisana w dowolnym języku .NET. Dodatkowo PowerShell udostępnia konkretneinterfejsy, takie jakWriteObject(), używany do korzystania ze specyficznych funkcjonalności PowerShell, jak np. zapisywanie obiektów wynikowych do potoku. Cmdlety mogą uzyskać bezpośredni dostęp do danych .NET lub za pomocą infrastruktruryDostawców PowerShella, dzięki którym zbiory danych są adresowalne przy użyciu unikalnychścieżek. Te zbiory są oznaczone literami dysków (oraz zaadresowane jako katalogi). Usługodawcy PowerShella zapewniają dostęp do m.in.systemu plików,rejestru,zbioru certyfikatów, a także do przestrzeni nazw dla aliasów komend, zmiennych i funkcji[10]. PowerShell zawiera także różnorodne cmdlety do zarządzania poszczególnymi systemamiWindows, a także systemami plików. Ponadto mogą one wykorzystać narzędzieWMI do kontroli komponentów systemu Windows. Inne aplikacje mogą rejestrować cmdlety za pośrednictwem PowerShella, tym samym pozwalając środowisku na zarządzanie nimi.

PowerShell V2 zawiera nieco bardziej „przenośną wersję” Cmdletów, które są nazywane modułami. PowerShell V2 wydał następujące oświadczenie:

„Moduły pozwalają programistom i administratorom skryptów na podział i organizację swojego kodu w PowerShell w samodzielne segmenty wielokrotnego użytku. Kod z segmentu wykonuje we własnym autonomicznym kontekście i nie wywiera wpływu na obiekty poza nim. Moduły pozwalają także definiować ograniczone środowisko za pomocą skryptu.”[11]

Potoki

[edytuj |edytuj kod]

Podobnie jak w systemie Linux, cmdlety PowerShell można ze sobą łączyć za pomocą potoków (ang. pipeline). Łączenie polega na tym, że dane wyjściowe jednego polecenia są uwzględnione, lub będą działać jako wejście do innego polecenia. Przykładowo, rezultat poleceniaGet-Process można doprowadzić za pomocą potoku doWhere-Object w celu odfiltrowania każdego procesu, który ma poniżej 10 MBpamięci stronicowanej, a następnie do komendySort-Object (by np. sortować obiekty na podstawie ilości operacji), i ostatecznie do komendySelect-Object w celu wybrania pierwszych 10 procesów[12].

Analogicznie jak w przypadkupotoków Uniksowych, potoki PowerShell pozwalają na tworzenie złożonych komend, której poszczególne etapy są łączone za pomocą operatora|. Różnica między potokami z obu środowisk polega na tym, że etapy komendy są wykonywane w ramach PowerShella, a nie jako zbiór procesów koordynowany przez system operacyjny, ponadto pomiędzy etapami przekazywane są obiekty .NET zamiast strumienia bajtów. Dzięki korzystaniu zobiektów i wykonywaniu etapów w ramach PowerShella nie ma potrzebyserializacji struktur danych, ani wyodrębniania ich przez bezpośrednieparsowanie tekstu wyjściowego. Obiekt może także enkapsulować konkretne funkcje działające na zawartych w nim danych, do których dostęp będzie miała docelowa komenda[13][14]. W przypadku ostatniego cmdleta w potoku, PowerShell automatycznie łączy jego obiekty wyjściowe do cmdletaOut-Default, który przekształca obiekty w strumień sformatowanych obiektów, a następnie wyświetla je na ekranie[15][16].

Ponieważ wszystkie obiekty PowerShella są obiektami typu .NET, współdzielą między sobą metodę.ToString(), która zwraca dane z obiektu w formie tekstowej. Dodatkowo, PowerShell pozwala na zdefiniowanie sposobu formatowania: tekstowa reprezentacja obiektów może być skonfigurowana poprzez wybranie, jakityp danych będzie wyświetlony i w jaki sposób to nastąpi. Jednak w celu zachowania kompatybilności wstecznej, jeśli dojdzie do sytuacji, w której zewnętrznyplik wykonywalny zostanie użyty w potoku, otrzyma on strumień tekstu reprezentujący obiekt, zamiast bezpośrednio zintegrować się z systemem typu PowerShell[17][18][19].

Pożądany stan konfiguracji

[edytuj |edytuj kod]

Pożądany stan konfiguracji (z ang.Desired State Configuration -DSC) pozwala na deklaratywne określenie sposobu, w jaki ma zostać skonfigurowane środowisko oprogramowania[20].

Po uruchomieniu „konfiguracji”,DSC sprawdza, czy stan systemu jest zgodny ze stanem opisanym w konfiguracji. KonfiguracjeDSC są idempotentne. Tzw. „Lokalny menedżer konfiguracji” (ang.Local Configuration Manager -LCM) okresowo wysyła zapytania do systemu za pomocą przepływu sterowania opisanego przez „zasoby” (nadrzędne kawałkiDSC), aby upewnić się, że stan konfiguracji jest zachowany.

Cmdlets a inne komendy

[edytuj |edytuj kod]

Poniższa tabela zawiera poleceniaCmdlets dostarczane z PowerShell porównane do odpowiadających im komend z konkurencyjnych interpreterów komend. Każde polecenie składa się z dwóch części: czasownikowej (get, set, clear itp.) oraz rzeczownikowej (location, host, process itp.). Dzięki temu nauczenie się dwóch stosunkowo niedługich list słów kluczowych pozwala na praktyczne użycie ponad stu dostępnych poleceń. Polecenia dotyczące zwykle plików i katalogów mają znacznie szersze działanie i dotyczą obiektów w dowolnej przestrzeni nazw. Przykładowo mogą dotyczyć równie dobrze plików, jak i gałęzi w rejestrze.

Windows PowerShell
(Cmdlet)
Windows PowerShell
(Alias)
cmd.exe /COMMAND.COM
(MS-DOS, Windows,OS/2, etc.)
Bash
(Unix,BSD, GNU/Linux, etc.)
Opis
Set-Locationsl, cd, chdircd, chdircdZmienia aktualną lokalizację (katalog, gałąź rejestru, repozytorium certyfikatów)
Clear-Hostcls, clearclsclearCzyści ekran
Copy-Itemcpi, copy, cpcopycpKopiuje obiekty (np. pliki) lub fragment struktury (np. drzewo katalogów)
Get-Helphelp, manhelpmanWyświetla pomoc do komend
Get-Commandgcmhelptype,which, compgenWyświetla listęp dostępnych komend
Get-Locationgl, cd, pwdcdpwdWyświetla ścieżkę do obecnego katalogu
Move-Itemmi, move, mvmovemvPrzenosi plik/katalog do nowej lokalizacji
Remove-Itemri, del, rmdir, rd, rmdel,rmdir, rdrm, rmdirUsuwa obiekt (plik, katalog itp.)
Rename-Itemrni, renrenmvZmienia nazwę obiektu (pliku, katalogu itp.)
Get-ChildItemgci, dir, lsdirlsZwraca wszystkie obiekty w bieżącej lokalizacji. (Na przykład pliki w aktualnym katalogu)
Write-Outputecho, writeechoechoWyświetla łańcuchy, zmienne itd. na ekranie
Pop-LocationpopdpopdpopdZamienia aktualną lokalizację na lokalizację ostatnio przesuniętą na stos
Push-LocationpushdpushdpushdPrzesuwa aktualną lokalizację na stos
Set-Variablesv, setsetsetWyświetla wartość zmiennej/Tworzy zmienną
Get-Contentgc, type, cattypecatWyświetla zawartość obiektu (np. pliku)
Get-Processgps, pstlist, tasklistpsWypisuje aktualnie uruchomione procesy
Stop-Processspps, killkill, taskkillkillZatrzymuje uruchomiony proces
Select-Stringslsfind, findstrgrepWyświetla dane, które są zgodne z podanym ciagiem znaków
Tee-Objecttee?teeTuneluje wejście do pliku lub zmiennej, przenosi wejście wzdłuż tunelu
Test-ConnectionN/ApingpingWysyła zapytanie ping (ICMP Echo Request) z komputera użytkownika do konkretnego urządzenia, bądź też wydaje polecenie innemu urządzeniu, aby wykonął tę operację
Invoke-WebRequestiwr, curl, wgetN/Awget,curlPobiera zawartość strony internetowej

Przykłady

[edytuj |edytuj kod]

Jedne z najbardziej przydatnych:

  • Zatrzymuje wszystkie procesy, których nazwa zaczyna się na literę „c”:
PS>Get-Processc*|Stop-Process
  • Szuka procesu, który zużywa więcej niż 300 MB i zatrzymuje go (ang.kill):
PS>Get-Process|Where-Object{$_.WS-gt300MB}|Stop-Process
  • Listuje wszystkie uruchomione usługi:
PS>Get-Service|Where-Object{$_.Status-eq"Running"}|Format-TableName,DisplayName
  • Znajduje i usuwa wszystkie pliki z rozszerzeniem XYZ folderu „C:\test” i jego podfolderów:
PS>Get-ChildItemC:\test\*-Include*.xyz-Recurse|Remove-Item
  • Listuje wszystkie zdefiniowane aliasy:
PS>Get-Alias
  • Listuje wszystkie polecenia (cmdlety, aplikacje lub aliasy) zaczynające się ciągiem znaków „new”:
PS>Get-Commandnew*
  • Wyświetla pomoc dla poleceniaget-command:
PS>Get-HelpGet-Command

Rozszerzenia plików

[edytuj |edytuj kod]
  • PS1 – skrypty powłoki (ang.shell) Windows PowerShell.
Uwaga! Domyślne ustawienia PowerShell nie pozwalają na uruchamianie skryptówniepodpisanych cyfrowo(inne języki). Ustawienie to można zmienić poleceniemSet-ExecutionPolicy (patrz:get-help about_signing).
  • PS1XML – typ istruktura danych Windows PowerShell.
  • PSC1 – plik konsoli Windows PowerShell.

Wsparcie dla aplikacji

[edytuj |edytuj kod]
AplikacjaWersjaCmdletsUsługodawcaZarządzane poprzez GUI
Exchange Server2007402TakTak
Windows Server2008TakTakNie
Microsoft SQL Server2008TakTakNie
Microsoft SharePoint2010TakTakNie
System Center Configuration Manager2012 R2400+TakNie
System Center Operations Manager200774TakNie
System Center Virtual Machine Manager2007TakTakTak
System Center Data Protection Manager2007TakNieNie
Windows Compute Cluster Server2007TakTakNie
Microsoft Transporter Suite dlaLotus Domino[21]08.02.001247NieNie
Microsoft PowerTools dlaOpen XML[22]1.033NieNie
IBM WebSphere MQ[23]6.0.2.244NieNie
Quest Management Shell for Active Directory[24]1.695NieNie
Special Operations Software Specops Command[25]1.0TakNieTak
VMware vSphere PowerCLI[26]6.3 R1455TakTak
Internet Information Services[27]7.054TakNie
Windows 7 Troubleshooting Center[28]6.1TakNieTak
Microsoft Deployment Toolkit[29]2010TakTakTak
NetApp Data ONTAP PowerShell Toolkit[30][31]4.11848TakTak
JAMS Scheduler – Job Access & Management System[32]5.052TakTak
UIAutomation[33]0.8432NieNie
Dell Equallogic[34]3.555NieNie
LOGINventory[35]5.8TakTakTak
SePSX[36]0.4.139NieNie

Alternatywne implementacje

[edytuj |edytuj kod]

ProjektPash (nazwa jest grą słów Uniksowej powłoki „bash[37]) byłotwartym oprogramowaniem iwieloplatformową reimplementacją PowerShella zrobioną za pomocąframeworka Mono. Pash został napisany w językuC# przez Igora Moochnicka i wydany na licencjiGNU. Rozwój tego projektu wstrzymano w roku 2008 i wznowiono w 2012.[37][38]

Przypisy

[edytuj |edytuj kod]
  1. sdwheeler: Co nowego w programie PowerShell 7.0 - PowerShell. docs.microsoft.com. [dostęp 2021-07-03]. (pol.).
  2. Microsoft kocha Linuksa. Otwarty PowerShell jest tego dowodem [online], dobreprogramy [dostęp 2021-07-03] .
  3. sdwheeler: Cykl życia pomocy technicznej programu PowerShell Core - PowerShell. docs.microsoft.com. [dostęp 2021-07-03]. (pol.).
  4. abcWindows PowerShell Cmdlets. [dostęp 2016-08-05].
  5. Creating Your first Cmdlet. [dostęp 2016-08-05].
  6. Get-Verb. TechNet, 8 maja 2014.
  7. Cmdlet Overview. MSDN, 8 maja 2014.
  8. Adding parameters That Process Command Line Input. [dostęp 2016-08-05].
  9. Adding parameters That Process Pipeline Input. [dostęp 2016-08-05].
  10. Windows PowerShell Providers. [dostęp 2016-08-05].
  11. Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0, and BITS 4.0). 24 września 2014. [dostęp 2016-08-05].
  12. Grzegorz Gałęzowski: Kurs programowania w PowerShell cz.5. 08-10-2011.
  13. Don Jones: Windows PowerShell – Rethinking the Pipeline. [w:]Microsoft TechNet [on-line]. Microsoft, 2008. [dostęp 2016-08-05].
  14. Windows PowerShell Object Concepts. [dostęp 2007-11-28]. [zarchiwizowane ztego adresu (2007-08-19)].
  15. PowerShell Team: How PowerShell Formatting and Outputting REALLY works. [dostęp 2016-08-05]. [zarchiwizowane ztego adresu (19 listopada 2007)].
  16. PowerShell Team: More – How does PowerShell formatting really work?. [dostęp 2016-08-05]. [zarchiwizowane ztego adresu (25 marca 2008)].
  17. about_Pipelines, [w:]TechNet [online],Microsoft, 8 maja 2014 .
  18. about_Objects. [w:]TechNet [on-line]. Microsoft, 8 maja 2014.
  19. about_Format.ps1xml, [w:]TechNet [online],Microsoft, 8 maja 2014 .
  20. E. Slesar: Windows PowerShell Desired State Configuration Overview. 16 maja 2016.
  21. Microsoft Transporter Suite for Lotus Domino. [dostęp 2016-08-05].
  22. PowerTools for Open XML. [dostęp 2016-08-05].
  23. MO74: WebSphere MQ – Windows PowerShell Library. [dostęp 2016-08-05].
  24. PowerShell Commands for Active Directory by Quest Software. [dostęp 2016-08-05].
  25. PowerShell Remoting through Group Policy. [dostęp 2016-08-05]. [zarchiwizowane ztego adresu (10 stycznia 2008)].
  26. VMware vSphere PowerCLI. [dostęp 2016-08-05].
  27. Windows PowerShell : IIS7 PowerShell Provider Tech Preview 2. [dostęp 2016-08-05].
  28. Kudos to the Win7 Diagnostics Team. [dostęp 2016-08-05].
  29. Niehaus Michael: MDT 2010 New Feature #16: PowerShell support. 10 lipca 2009. [dostęp 2016-08-05].
  30. Kudos to NetApp for Data ONTAP PowerShell ToolKit. [dostęp 2016-08-05].
  31. PowerShell Toolkit 3.2 Announcement. [dostęp 2016-08-05].
  32. Heterogeneous Job Scheduling With PowerShell. [dostęp 2016-08-05].
  33. UIAutomation PowerShell Extensions. [dostęp 2016-08-05].
  34. EqualLogic HIT-ME with PowerShell. [dostęp 2016-08-05].
  35. Loginventory 5.8 mit besserer Erfassung und Zugriffssteuerung. [dostęp 2016-08-05].
  36. Selenium PowerShell eXtensions. [dostęp 2016-08-05].
  37. abPash. [w:]SourceForge [on-line]. Dice Holdings, Inc.. [dostęp 2016-08-04].
  38. Pash Project. [dostęp 2016-08-04].

Linki zewnętrzne

[edytuj |edytuj kod]
Platforma .NET
języki wspierane standardowo przezVS
inne języki i środowiska
alternatywne implementacje platformy
Źródło: „https://pl.wikipedia.org/w/index.php?title=PowerShell&oldid=77351833
Kategorie:
Ukryte kategorie:

[8]ページ先頭

©2009-2026 Movatter.jp