Co to jest program PowerShell?What is PowerShell?

Program PowerShell to międzyplatformowa struktura zarządzania zadaniami i konfiguracji, która składa się z powłoki wiersza polecenia i języka skryptowego.PowerShell is a cross-platform task automation and configuration management framework, consisting of a command-line shell and scripting language. W przeciwieństwie do większości powłok, które akceptują i zwracają tekst, program PowerShell jest zbudowany w oparciu o środowisko uruchomieniowe języka wspólnego (CLR) platformy .NET, a następnie akceptuje i zwraca obiekty .NET.Unlike most shells, which accept and return text, PowerShell is built on top of the .NET Common Language Runtime (CLR), and accepts and returns .NET objects. Ta podstawowa zmiana oferuje zupełnie nowe narzędzia i metody automatyzacji.This fundamental change brings entirely new tools and methods for automation.

Dane wyjściowe są oparte na obiektachOutput is object-based

W przeciwieństwie do tradycyjnych interfejsów wiersza polecenia polecenia cmdlet programu PowerShell są przeznaczone do obsługi obiektów.Unlike traditional command-line interfaces, PowerShell cmdlets are designed to deal with objects. Obiekt jest informacjami strukturalnymi, które są więcej niż tylko ciąg znaków występujący na ekranie.An object is structured information that is more than just the string of characters appearing on the screen. Dane wyjściowe polecenia zawsze mają dodatkowe informacje, których można użyć w razie potrzeby.Command output always carries extra information that you can use if you need it.

Jeśli używasz narzędzi do przetwarzania tekstu do przetwarzania danych w przeszłości, zobaczysz, że zadziałają inaczej, gdy są używane w programie PowerShell.If you've used text-processing tools to process data in the past, you'll find that they behave differently when used in PowerShell. W większości przypadków narzędzia do przetwarzania tekstu nie są potrzebne do wyodrębnienia określonych informacji.In most cases, you don't need text-processing tools to extract specific information. Bezpośredni dostęp do części danych przy użyciu standardowej składni obiektu programu PowerShell.You directly access portions of the data using standard PowerShell object syntax.

Rodzina poleceń jest rozszerzalnaThe command family is extensible

Interfejsy takie jak cmd.exe nie zapewniają metody bezpośredniego rozszerzając wbudowanego zestawu poleceń.Interfaces such as cmd.exe don't provide a way for you to directly extend the built-in command set. Można tworzyć zewnętrzne narzędzia wiersza polecenia, które działają w programie cmd.exe .You can create external command-line tools that run in cmd.exe. Jednak te narzędzia zewnętrzne nie mają usług, takich jak integracja z pomocą techniczną.But these external tools don't have services, such as Help integration. cmd.exenie wie, że te narzędzia zewnętrzne są prawidłowymi poleceniami.cmd.exe doesn't automatically know that these external tools are valid commands.

Polecenia w programie PowerShell są nazywane poleceniami cmdlet.The commands in PowerShell are known as cmdlets. Każdego polecenia cmdlet można używać oddzielnie, ale ich moc jest realizowana podczas łączenia ich w celu wykonywania złożonych zadań.You can use each cmdlet separately, but their power is realized when you combine them to perform complex tasks. Podobnie jak w przypadku wielu powłok, program PowerShell zapewnia dostęp do systemu plików na komputerze.Like many shells, PowerShell gives you access to the file system on the computer. Dostawcy programu PowerShell umożliwiają dostęp do innych magazynów danych, takich jak rejestr i magazyny certyfikatów, jak w prosty sposób uzyskać dostęp do systemu plików.PowerShell providers enable you to access other data stores, such as the registry and the certificate stores, as easily as you access the file system.

Możesz utworzyć własne polecenie cmdlet i moduły funkcji za pomocą skompilowanego kodu lub skryptów.You can create your own cmdlet and function modules using compiled code or scripts. Moduły mogą dodawać do powłoki polecenia cmdlet i dostawcy.Modules can add cmdlets and providers to the shell. Program PowerShell obsługuje również skrypty, które są analogiczne do skryptów powłoki systemu UNIX i cmd.exe plików wsadowych.PowerShell also supports scripts that are analogous to UNIX shell scripts and cmd.exe batch files.

Obsługa aliasów poleceńSupport for command aliases

Program PowerShell obsługuje aliasy do odwoływania się do poleceń według alternatywnych nazw.PowerShell supports aliases to refer to commands by alternate names. Aliasowanie umożliwia użytkownikom ze środowiska w innych powłokach używanie typowych nazw poleceń, które już znają dla podobnych operacji w programie PowerShell.Aliasing allows users with experience in other shells to use common command names that they already know for similar operations in PowerShell.

Aliasowanie kojarzy nową nazwę z innym poleceniem.Aliasing associates a new name with another command. Na przykład program PowerShell ma funkcję wewnętrzną o nazwie Clear-Host , która czyści okno danych wyjściowych.For example, PowerShell has an internal function named Clear-Host that clears the output window. Możesz wpisać cls clear alias lub w wierszu polecenia.You can type either the cls or clear alias at a command prompt. Program PowerShell interpretuje te aliasy i uruchamia Clear-Host funkcję.PowerShell interprets these aliases and runs the Clear-Host function.

Ta funkcja ułatwia użytkownikom naukę programu PowerShell.This feature helps users to learn PowerShell. Pierwsze, większość cmd.exe i użytkownicy systemu UNIX mają dużą repertuar poleceń, które są już znane użytkownikom przez nazwę.First, most cmd.exe and Unix users have a large repertoire of commands that users already know by name. Odpowiedniki programu PowerShell mogą nie dawać identycznych wyników.The PowerShell equivalents may not produce identical results. Wyniki są jednak blisko wystarczające, aby użytkownicy mogli wykonywać zadania bez znajomości nazwy polecenia programu PowerShell.However, the results are close enough that users can do work without knowing the PowerShell command name. "Pamięć mięśniowa" to inne główne źródło frustrację podczas uczenia nowej powłoki poleceń."Muscle memory" is another major source of frustration when learning a new command shell. Jeśli użyto cmd.exe przez lata, możesz wpisać cls polecenie, aby wyczyścić ekran.If you have used cmd.exe for years, you might reflexively type the cls command to clear the screen. Bez aliasu dla Clear-Host , zostanie wyświetlony komunikat o błędzie i nie będzie wiadomo, co należy zrobić, aby wyczyścić dane wyjściowe.Without the alias for Clear-Host, you receive an error message and won't know what to do to clear the output.

Program PowerShell obsługuje wprowadzanie i wyświetlanie konsoliPowerShell handles console input and display

Po wpisaniu polecenia program PowerShell zawsze przetwarza bezpośrednio dane wejściowe wiersza polecenia.When you type a command, PowerShell always processes the command-line input directly. Program PowerShell formatuje również dane wyjściowe widoczne na ekranie.PowerShell also formats the output that you see on the screen. Różnica ta jest istotna, ponieważ zmniejsza ilość pracy wymaganej przez polecenie cmdlet.This difference is significant because it reduces the work required of each cmdlet. Gwarantuje to, że zawsze można wykonać czynności w taki sam sposób, jak w przypadku każdego polecenia cmdlet.It ensures that you can always do things the same way with any cmdlet. Deweloperzy poleceń cmdlet nie muszą pisać kodu w celu przeanalizowania argumentów wiersza polecenia lub formatowania danych wyjściowych.Cmdlet developers don't need to write code to parse the command-line arguments or format the output.

Tradycyjne narzędzia wiersza polecenia mają własne schematy do żądania i wyświetlania pomocy.Traditional command-line tools have their own schemes for requesting and displaying Help. Niektóre narzędzia wiersza polecenia służą /? do wyzwalania wyświetlania pomocy; inne korzystają z -? , /H lub nawet // .Some command-line tools use /? to trigger the Help display; others use -?, /H, or even //. Niektóre będą wyświetlać pomoc w oknie GUI, a nie w konsoli programu.Some will display Help in a GUI window, rather than in the console display. Jeśli używasz nieprawidłowego parametru, narzędzie może zignorować wpisane dane i rozpocząć automatyczne wykonywanie zadania.If you use the wrong parameter, the tool might ignore what you typed and begin executing a task automatically. Ponieważ program PowerShell automatycznie analizuje i przetwarza wiersz polecenia, -? parametr zawsze oznacza "Wyświetl mi pomoc dla tego polecenia".Since PowerShell automatically parses and processes the command line, the -? parameter always means "show me Help for this command".

Uwaga

W przypadku uruchamiania aplikacji graficznej w programie PowerShell zostanie otwarte okno aplikacji.If you run a graphic application in PowerShell, the window for the application opens. Program PowerShell jest interweniowany tylko podczas przetwarzania wprowadzonych danych wejściowych z wiersza polecenia lub danych wyjściowych aplikacji zwracanych do okna konsoli.PowerShell intervenes only when processing the command-line input you supply or the application output returned to the console window. Nie ma to wpływu na sposób, w jaki aplikacja działa wewnętrznie.It does not affect how the application works internally.

Program PowerShell ma potokPowerShell has a pipeline

Potoki są raczej najbardziej cenną koncepcją używaną w interfejsach wiersza polecenia.Pipelines are arguably the most valuable concept used in command-line interfaces. W przypadku poprawnego użycia potoki zmniejszają nakład pracy przy użyciu złożonych poleceń i ułatwiają wyświetlanie przepływu pracy.When used properly, pipelines reduce the effort of using complex commands and make it easier to see the flow of work. Każde polecenie w potoku przekazuje jego wyjście, element według elementu, do następnego polecenia.Each command in a pipeline passes its output, item by item, to the next command. Polecenia nie muszą obsługiwać więcej niż jednego elementu jednocześnie.Commands don't have to handle more than one item at a time. Wynikiem jest zmniejszenie zużycia zasobów i możliwość natychmiastowego uzyskania danych wyjściowych.The result is reduced resource consumption and the ability to get output immediately.

Notacja użyta dla potoków jest podobna do notacji używanej w innych powłokach.The notation used for pipelines is similar to the notation used in other shells. Na pierwszy rzut oka może nie być oczywiste, jak potoki różnią się w programie PowerShell.At first glance, it may not be apparent how pipelines are different in PowerShell. Mimo że widzisz tekst na ekranie, program PowerShell potokuje obiekty, nie tekst, między poleceniami.Although you see text on the screen, PowerShell pipes objects, not text, between commands.

Na przykład, jeśli używasz Out-Host polecenia cmdlet, aby wymusić wyświetlanie danych wyjściowych z innego polecenia za pośrednictwem strony, dane wyjściowe wyglądają podobnie jak w przypadku normalnego tekstu wyświetlanego na ekranie, podzielone na strony:For example, if you use the Out-Host cmdlet to force a page-by-page display of output from another command, the output looks just like the normal text displayed on the screen, broken up into pages:

Get-ChildItem | Out-Host -Paging
    Directory: /mnt/c/Git/PS-Docs/PowerShell-Docs/reference/7.0/Microsoft.PowerShell.Core

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----          05/22/2020    08:30                About
-----          05/20/2020    14:36           9044 Add-History.md
-----          05/20/2020    14:36          12227 Clear-History.md
-----          05/20/2020    14:36           3566 Clear-Host.md
-----          05/20/2020    14:36          29087 Connect-PSSession.md
-----          05/20/2020    14:36           5705 Debug-Job.md
-----          05/20/2020    14:36           3515 Disable-ExperimentalFeature.md
-----          05/20/2020    14:36          25531 Disable-PSRemoting.md
-----          05/20/2020    14:36           7852 Disable-PSSessionConfiguration.md
-----          05/20/2020    14:36          25355 Disconnect-PSSession.md
-----          05/20/2020    14:36           3491 Enable-ExperimentalFeature.md
-----          05/20/2020    14:36          13310 Enable-PSRemoting.md
-----          05/20/2020    14:36           8401 Enable-PSSessionConfiguration.md
-----          05/20/2020    14:36           9531 Enter-PSHostProcess.md
...
<SPACE> next page; <CR> next line; Q quit

Stronicowanie zmniejsza również wykorzystanie procesora, ponieważ przetwarzanie transferów do Out-Host polecenia cmdlet jest gotowe do wyświetlenia.Paging also reduces CPU utilization because processing transfers to the Out-Host cmdlet when it has a complete page ready to display. Polecenia cmdlet, które poprzedzają to w potoku, Wstrzymaj do momentu udostępnienia następnej strony danych wyjściowych.The cmdlets that precede it in the pipeline pause execution until the next page of output is available.

Obiekty w potokuObjects in the pipeline

Po uruchomieniu polecenia cmdlet w programie PowerShell zobaczysz tekst wyjściowy, ponieważ jest to konieczne do reprezentowania obiektów jako tekst w oknie konsoli.When you run a cmdlet in PowerShell, you see text output because it is necessary to represent objects as text in a console window. W danych wyjściowych tekstu mogą nie być wyświetlane wszystkie właściwości wyjściowego obiektu.The text output may not display all of the properties of the object being output.

Rozważmy na przykład Get-Location polecenie cmdlet.For example, consider the Get-Location cmdlet. Tekst wyjściowy jest podsumowaniem informacji, a nie z pełną reprezentacją obiektu zwróconego przez Get-Location .The text output is a summary of information, not a complete representation of the object returned by Get-Location. Nagłówek w danych wyjściowych zostanie dodany przez proces, który sformatuje dane na potrzeby wyświetlania na ekranie.The heading in the output is added by the process that formats the data for onscreen display.

Get-Location
Path
----
C:\

Potok danych wyjściowych Get-Member polecenia cmdlet wyświetla informacje o obiekcie zwracanym przez Get-Location .Piping the output to the Get-Member cmdlet displays information about the object returned by Get-Location.

Get-Location | Get-Member
   TypeName: System.Management.Automation.PathInfo

Name         MemberType Definition
----         ---------- ----------
Equals       Method     bool Equals(System.Object obj)
GetHashCode  Method     int GetHashCode()
GetType      Method     type GetType()
ToString     Method     string ToString()
Drive        Property   System.Management.Automation.PSDriveInfo Drive {get;}
Path         Property   string Path {get;}
Provider     Property   System.Management.Automation.ProviderInfo Provider {get;}
ProviderPath Property   string ProviderPath {get;}

Get-Locationzwraca obiekt PathInfo , który zawiera bieżącą ścieżkę i inne informacje.Get-Location returns a PathInfo object that contains the current path and other information.

Wbudowany system pomocyBuilt-in help system

Podobnie jak w man przypadku stron systemu UNIX, program PowerShell zawiera szczegółowe artykuły pomocy objaśniające koncepcje programu PowerShell i składnię poleceń.Similar to Unix man pages, PowerShell includes detailed help articles that explain PowerShell concepts and command syntax. Użyj polecenia cmdlet Get-Help , aby wyświetlić te artykuły w wierszu polecenia lub wyświetlić ostatnio zaktualizowane wersje tych artykułów w dokumentacji programu PowerShell w trybie online.Use the Get-Help cmdlet to display these articles at the command prompt or view the most recently updated versions of these articles in the PowerShell documentation online.

Następne krokiNext steps

Aby dowiedzieć się więcej na temat programu PowerShell, zobacz sekcję uczenie programu PowerShell w tej witrynie.To learn more about PowerShell, see the Learning PowerShell section of this site.