Co je PowerShell?What is PowerShell?

PowerShell je automatizace úloh pro různé platformy a rozhraní pro správu konfigurace, která se skládá z prostředí příkazového řádku a skriptovacího jazyka.PowerShell is a cross-platform task automation and configuration management framework, consisting of a command-line shell and scripting language. Na rozdíl od většiny prostředí, která přijímají a vracejí text, je PowerShell postaven nad modulem CLR (Common Language Runtime) .NET a přijímá a vrací objekty .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. Tato zásadní změna přináší zcela nové nástroje a metody pro automatizaci.This fundamental change brings entirely new tools and methods for automation.

Výstup je založený na objektechOutput is object-based

Na rozdíl od tradičních rozhraní příkazového řádku jsou rutiny PowerShellu navržené pro práci s objekty.Unlike traditional command-line interfaces, PowerShell cmdlets are designed to deal with objects. Objekt je strukturované informace, které jsou více než pouze řetězec znaků zobrazených na obrazovce.An object is structured information that is more than just the string of characters appearing on the screen. Výstup příkazu vždy přináší další informace, které můžete použít, pokud ho potřebujete.Command output always carries extra information that you can use if you need it.

Pokud jste pro zpracování dat v minulosti používali nástroje pro zpracování textu, zjistíte, že se chovají odlišně při použití v prostředí 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. Ve většině případů nepotřebujete pro extrakci konkrétních informací nástroje pro zpracování textu.In most cases, you don't need text-processing tools to extract specific information. K částem dat přímo přistupujete pomocí standardní syntaxe objektu PowerShellu.You directly access portions of the data using standard PowerShell object syntax.

Řada příkazů je rozšiřitelná.The command family is extensible

Rozhraní, například cmd.exe neposkytují způsob, jak přímo zvětšit integrovanou sadu příkazů.Interfaces such as cmd.exe don't provide a way for you to directly extend the built-in command set. Můžete vytvořit externí nástroje příkazového řádku, které běží v cmd.exe .You can create external command-line tools that run in cmd.exe. Tyto externí nástroje ale nemají služby, jako je například integrace s usnadněním.But these external tools don't have services, such as Help integration. cmd.exeNástroj automaticky nezjistí, že tyto externí nástroje jsou platné příkazy.cmd.exe doesn't automatically know that these external tools are valid commands.

Příkazy v PowerShellu se označují jako rutiny.The commands in PowerShell are known as cmdlets. Jednotlivé rutiny můžete použít samostatně, ale jejich výkon se vyplatí, když je zkombinujete k provádění složitých úloh.You can use each cmdlet separately, but their power is realized when you combine them to perform complex tasks. Podobně jako u mnoha prostředí vám PowerShell umožní přístup k systému souborů v počítači.Like many shells, PowerShell gives you access to the file system on the computer. Poskytovatelé prostředí PowerShell umožňují přístup k systému souborů i jiným datovým úložištím, jako je registr a úložiště certifikátů, stejně snadno.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.

Můžete vytvořit vlastní rutinu a moduly funkcí pomocí zkompilovaného kódu nebo skriptů.You can create your own cmdlet and function modules using compiled code or scripts. Moduly můžou do prostředí přidat rutiny a zprostředkovatele.Modules can add cmdlets and providers to the shell. PowerShell podporuje i skripty, které jsou podobné skriptům prostředí UNIX a cmd.exe dávkovým souborům.PowerShell also supports scripts that are analogous to UNIX shell scripts and cmd.exe batch files.

Podpora aliasů příkazůSupport for command aliases

PowerShell podporuje aliasy pro odkazování na příkazy pomocí alternativních názvů.PowerShell supports aliases to refer to commands by alternate names. Aliasing umožňuje uživatelům s prostředím v jiných prostředích používat běžné názvy příkazů, které už znají pro podobné operace v prostředí PowerShell.Aliasing allows users with experience in other shells to use common command names that they already know for similar operations in PowerShell.

Aliasing přidruží nový název k jinému příkazu.Aliasing associates a new name with another command. Například prostředí PowerShell obsahuje interní funkci s názvem Clear-Host , která vymaže okno výstup.For example, PowerShell has an internal function named Clear-Host that clears the output window. clsAlias nebo můžete zadat clear na příkazovém řádku.You can type either the cls or clear alias at a command prompt. PowerShell tyto aliasy interpretuje a spustí Clear-Host funkci.PowerShell interprets these aliases and runs the Clear-Host function.

Tato funkce pomáhá uživatelům naučit se prostředí PowerShell.This feature helps users to learn PowerShell. První, většina cmd.exe a uživatelé se systémem UNIX mají velké repertoáru příkazy, které už znají podle názvu.First, most cmd.exe and Unix users have a large repertoire of commands that users already know by name. Ekvivalenty prostředí PowerShell nemůžou způsobit identické výsledky.The PowerShell equivalents may not produce identical results. Výsledky jsou ale dostatečně blízko, že uživatelé můžou pracovat bez znalosti názvu příkazu PowerShellu.However, the results are close enough that users can do work without knowing the PowerShell command name. "Paměť svalu" je další hlavní zdroj frustrace při učení nového příkazového prostředí."Muscle memory" is another major source of frustration when learning a new command shell. Pokud jste používali cmd.exe roky, můžete znovu použít cls příkaz pro vymazání obrazovky.If you have used cmd.exe for years, you might reflexively type the cls command to clear the screen. Bez aliasu pro Clear-Host se zobrazí chybová zpráva a nebude informovat o tom, co má výstup vymazat.Without the alias for Clear-Host, you receive an error message and won't know what to do to clear the output.

PowerShell zpracovává vstup a zobrazení konzoly.PowerShell handles console input and display

Když zadáte příkaz, PowerShell vždy zpracuje vstup z příkazového řádku přímo.When you type a command, PowerShell always processes the command-line input directly. PowerShell také formátuje výstup, který vidíte na obrazovce.PowerShell also formats the output that you see on the screen. Tento rozdíl je významný, protože snižuje práci nutnou pro jednotlivé rutiny.This difference is significant because it reduces the work required of each cmdlet. Zajišťuje, že můžete vždy provádět stejné možnosti jako u libovolné rutiny.It ensures that you can always do things the same way with any cmdlet. Vývojáři rutin nebudou muset psát kód, který by mohl analyzovat argumenty příkazového řádku nebo formátovat výstup.Cmdlet developers don't need to write code to parse the command-line arguments or format the output.

Tradiční nástroje příkazového řádku mají vlastní schémata pro vyžádání a zobrazení nápovědu.Traditional command-line tools have their own schemes for requesting and displaying Help. Některé nástroje příkazového řádku slouží /? k aktivaci zobrazení v nápovědě, jiné použití -? , /H nebo dokonce i // .Some command-line tools use /? to trigger the Help display; others use -?, /H, or even //. Některé budou zobrazovat v okně grafického uživatelského rozhraní místo v zobrazení konzoly.Some will display Help in a GUI window, rather than in the console display. Pokud použijete nesprávný parametr, nástroj může ignorovat, co jste zadali, a začít úlohu spouštět automaticky.If you use the wrong parameter, the tool might ignore what you typed and begin executing a task automatically. Vzhledem k tomu, že PowerShell automaticky analyzuje a zpracovává příkazový řádek, -? parametr vždycky znamená "Zobrazit nápovědu pro tento příkaz".Since PowerShell automatically parses and processes the command line, the -? parameter always means "show me Help for this command".

Poznámka

Pokud v PowerShellu spustíte grafickou aplikaci, otevře se okno aplikace.If you run a graphic application in PowerShell, the window for the application opens. PowerShell se zařadí jenom při zpracování vstupu do příkazového řádku, který zadáte, nebo když se výstup aplikace vrátí do okna konzoly.PowerShell intervenes only when processing the command-line input you supply or the application output returned to the console window. Nemá vliv na to, jak aplikace funguje interně.It does not affect how the application works internally.

PowerShell má kanálPowerShell has a pipeline

Kanály jsou pravděpodobně s nejužitečným konceptem používaným v rozhraních příkazového řádku.Pipelines are arguably the most valuable concept used in command-line interfaces. V případě správného použití kanály snižují úsilí při použití složitých příkazů a usnadňuje tak zobrazení toku práce.When used properly, pipelines reduce the effort of using complex commands and make it easier to see the flow of work. Každý příkaz v kanálu předá svůj výstup, položku podle položky, k dalšímu příkazu.Each command in a pipeline passes its output, item by item, to the next command. Příkazy nemusejí v jednom okamžiku zpracovávat více než jednu položku.Commands don't have to handle more than one item at a time. Výsledkem je snížení spotřeby prostředků a možnost okamžitě získat výstup.The result is reduced resource consumption and the ability to get output immediately.

Zápis použitý pro kanály je podobný zápisu použitému v jiných prostředích.The notation used for pipelines is similar to the notation used in other shells. Na první pohled nemusí být zřejmé, jak se kanály liší v prostředí PowerShell.At first glance, it may not be apparent how pipelines are different in PowerShell. I když vidíte text na obrazovce, objekty kanálů PowerShellu, ne text, mezi příkazy.Although you see text on the screen, PowerShell pipes objects, not text, between commands.

Například pokud použijete Out-Host rutinu k vynucení zobrazení výstupu na stránce z jiného příkazu, bude výstup vypadat stejně jako normální text zobrazený na obrazovce, rozdělený na stránky: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

Stránkování také snižuje využití procesoru, protože zpracovává převody do Out-Host rutiny, když má kompletní stránku připravenou k zobrazení.Paging also reduces CPU utilization because processing transfers to the Out-Host cmdlet when it has a complete page ready to display. Rutiny, které předcházejí do kanálu, pozastaví spuštění, dokud nebude k dispozici další stránka výstupu.The cmdlets that precede it in the pipeline pause execution until the next page of output is available.

Objekty v kanáluObjects in the pipeline

Když spustíte rutinu v PowerShellu, zobrazí se textový výstup, protože je nutné reprezentovat objekty jako text v okně konzoly.When you run a cmdlet in PowerShell, you see text output because it is necessary to represent objects as text in a console window. Textový výstup nesmí Zobrazit všechny vlastnosti objektu, který je výstupem.The text output may not display all of the properties of the object being output.

Zvažte například Get-Location rutinu.For example, consider the Get-Location cmdlet. Textový výstup je souhrn informací, nikoli kompletní reprezentace objektu vráceného Get-Location .The text output is a summary of information, not a complete representation of the object returned by Get-Location. Záhlaví ve výstupu je přidáno procesem, který formátuje data pro zobrazení na obrazovce.The heading in the output is added by the process that formats the data for onscreen display.

Get-Location
Path
----
C:\

Výstup výstupu do Get-Member rutiny zobrazí informace o objektu, který vrátil 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-LocationVrátí objekt PathInfo , který obsahuje aktuální cestu a další informace.Get-Location returns a PathInfo object that contains the current path and other information.

Integrovaný systém nápovědyBuilt-in help system

Podobně jako stránky systému UNIX man obsahuje PowerShell podrobné články s přehledy, které vysvětlují koncepty prostředí PowerShell a syntaxi příkazů.Similar to Unix man pages, PowerShell includes detailed help articles that explain PowerShell concepts and command syntax. Pomocí rutiny Get-Help můžete tyto články zobrazit na příkazovém řádku nebo si můžete prohlédnout poslední aktualizované verze těchto článků v dokumentaci k PowerShellu 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.

Další krokyNext steps

Další informace o PowerShellu najdete v části výukové prostředí PowerShell tohoto webu.To learn more about PowerShell, see the Learning PowerShell section of this site.