Sdílet prostřednictvím


Seznámení s PowerShellem

PowerShell je prostředí příkazového řádku a skriptovací jazyk v jednom. PowerShell byl původně vyvinut na Windows, aby pomáhal automatizovat administrativní úkoly. Teď běží na různých platformách a dá se použít pro různé úlohy.

PowerShell je jedinečný tím, že přijímá a vrací objekty .NET, nikoli text. Tato funkce usnadňuje propojení různých příkazů v potrubí.

K čemu se dá PowerShell použít?

PowerShell byl zpočátku jen pro Windows. Teď je multiplatformní a dá se použít pro různé úlohy, jako jsou:

  • Správa cloudu. PowerShell se dá použít ke správě cloudových prostředků. Můžete například načíst informace, aktualizovat nebo nasadit nové prostředky.
  • CI/CD. Dá se také použít jako součást kanálu kontinuální integrace nebo průběžného nasazování.
  • Automatizujte úlohy pro Službu Active Directory a Exchange. Můžete ho použít k automatizaci téměř libovolné úlohy ve Windows, jako je vytváření uživatelů ve službě Active Directory a poštovních schránek v Exchangi.

Kdo používá PowerShell?

PowerShell je výkonný nástroj, který pomáhá lidem pracovat v mnoha rolích. PowerShell tradičně používali správci systému. Teď jej používají lidé, kteří se nazývají DevOps, Cloud Ops a dokonce i vývojáři.

PowerShell příkazy (cmdlets)

PowerShell obsahuje stovky předinstalovaných příkazů. Příkazy PowerShellu se nazývají cmdlety (vyslovuje se jako command-lets).

Název každého cmdletu se skládá z dvojice Sloveso-Podstatné jméno. Například: Get-Process. Tato pojmenovací konvence usnadňuje pochopení toho, co cmdlet dělá. Usnadňuje také vyhledání příkazu, který hledáte. Při hledání cmdletu, který chcete použít, můžete filtrovat podle slovesa nebo podstatného jména.

Použití cmdletů k prozkoumání PowerShellu

Když se poprvé setkáte s PowerShellem, může se zdát zastrašující, protože je toho tolik, co se musíte naučit. Prostředí PowerShell je navrženo tak, aby vám pomohlo postupně se učit podle vašich potřeb.

PowerShell obsahuje rutiny, které vám pomůžou zjistit PowerShell. Pomocí těchto čtyř cmdletů můžete zjistit, jaké příkazy jsou k dispozici, co dělají a na jakých typech dat fungují.

  • Get-Verb. Spuštění tohoto příkazu vrátí seznam příkazů, které většina příkazů dodržuje. Odpověď obsahuje popis toho, co tyto příkazy dělají. Vzhledem k tomu, že většina příkazů dodržuje tyto zásady vytváření názvů, nastavuje očekávání ohledně toho, co příkaz dělá. Tento příkaz vám pomůže vybrat odpovídající příkaz a pojmenovat příkaz při vytváření vlastních příkazů.
  • Get-Command. Tento příkaz načte seznam všech příkazů nainstalovaných na vašem počítači.
  • Get-Member. Funguje na výstupu založeném na objektech a dokáže zjistit, jaké objekty, vlastnosti a metody jsou pro příkaz k dispozici.
  • Get-Help. Vyvolání tohoto příkazu s názvem příkazu jako argument zobrazí stránku nápovědy popisující různé části příkazu.

Pomocí těchto příkazů můžete zjistit téměř cokoli, co potřebujete vědět o PowerShellu.

Verb (Příkaz)

Verb je důležitým konceptem v PowerShellu. Jedná se o standard pojmenování, který většina cmdletů dodržuje. Jedná se také o normu pojmenování, kterou očekáváte, když píšete vlastní příkazy. Myšlenka spočívá v tom, že sloveso říká, co se snažíte udělat, například čtení nebo změna dat. PowerShell obsahuje standardizovaný seznam sloves. Pokud chcete získat úplný seznam všech možných sloves, použijte rutinu Get-Verb:

Get-Verb

Cmdlet vrátí dlouhý seznam sloves. Popis poskytuje kontext pro to, co má příkaz dělat. Tady je několik prvních řádků výstupu:

Verb    AliasPrefix   Group     Description
----    -----------   -----     -----------
Add     a             Common    Adds a resource to a container, or attaches an item to another item
Clear   cl            Common    Removes all the resources from a container but does not delete the container
Close   cs            Common    Changes the state of a resource to make it inaccessible, unavailable, or unusab…
Copy    cp            Common    Copies a resource to another name or to another container
Enter   et            Common    Specifies an action that allows the user to move into a resource
Exit    ex            Common    Sets the current environment or context to the most recently used context
...

Hledání příkazů pomocí Get-Command

Rutina Get-Command vrátí seznam všech dostupných příkazů nainstalovaných ve vašem systému. Seznam může být velký. Množství informací, které se vrátí, můžete omezit filtrováním odpovědi pomocí parametrů nebo pomocných rutin.

Filtrovat podle názvu

Výstup Get-Command můžete filtrovat pomocí různých parametrů. Filtrování umožňuje najít příkazy, které mají určité vlastnosti. Parametr Name umožňuje najít konkrétní příkaz podle názvu.

Get-Command -Name Get-Process
CommandType     Name              Version    Source
-----------     ----              -------    ------
Cmdlet          Get-Process       7.0.0.0    Microsoft.PowerShell.Management

Co když chcete najít všechny příkazy, které pracují s procesy? Zástupné znaky * můžete použít k porovnání jiných forem řetězce. Například:

Get-Command -Name *-Process
CommandType     Name              Version    Source
-----------     ----              -------    ------
Cmdlet          Debug-Process     7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Get-Process       7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Start-Process     7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Stop-Process      7.0.0.0    Microsoft.PowerShell.Management
Cmdlet          Wait-Process      7.0.0.0    Microsoft.PowerShell.Management

Filtrování podle podstatných jmen a sloves

Existují další parametry, které filtrují hodnoty sloves a podstatných jmen. Slovesná část názvu příkazu je úplně vlevo. Sloveso by mělo být jednou z hodnot vrácených Get-Verb cmdletem. Nejpravější část příkazu je část s podstatným jménem. Podstatné jméno může být cokoli.

  • Filtrování podle slovesa. V příkazu Get-Process je část slovesa Get. Pokud chcete filtrovat část slovesa, použijte parametr Sloveso .

    Get-Command -Verb 'Get'
    

    V tomto příkladu jsou uvedeny všechny příkazy, které používají příkaz Get.

  • Filtrovat podle podstatného jména. V příkazu Get-Process je část podstatného jména Process. Chcete-li filtrovat podle podstatného jména, použijte parametr Noun. Následující příklad vrátí všechny rutiny, které mají podstatná jména začínající písmenem U.

    Get-Command -Noun U*
    

Můžete také zkombinovat parametry a zúžit hledání, například:

Get-Command -Verb Get -Noun U*
CommandType     Name                         Version    Source
-----------     ----                         -------    ------
Cmdlet          Get-UICulture                7.0.0.0    Microsoft.PowerShell.Utility
Cmdlet          Get-Unique                   7.0.0.0    Microsoft.PowerShell.Utility
Cmdlet          Get-Uptime                   7.0.0.0    Microsoft.PowerShell.Utility

Použití pomocných cmdletů k filtrování výsledků

Výsledky můžete filtrovat také pomocí jiných rutin.

  • Select-Object. Tento univerzální příkaz vám pomůže vybrat konkrétní vlastnosti z jednoho nebo více objektů. Můžete také omezit počet vrácených položek. Následující příklad vrátí hodnoty vlastnosti Name a Source pro prvních 5 dostupných příkazů v aktuální relaci.

    Get-Command | Select-Object -First 5 -Property Name, Source
    
    Name                      Source
    ----                      ------
    Add-AppPackage            Appx
    Add-AppPackageVolume      Appx
    Add-AppProvisionedPackage Dism
    Add-AssertionOperator     Pester
    Add-ProvisionedAppPackage Dism
    

    Další informace naleznete v tématu Select-Object.

  • Where-Object. Tato rutina umožňuje filtrovat vrácené objekty na základě hodnot vlastností. Příkaz přebírá výraz, který může testovat hodnotu vlastnosti. Následující příklad vrátí všechny procesy, kde ProcessName začíná na p.

    Get-Process | Where-Object {$_.ProcessName -like "p*"}
    

    Rutina Get-Process vrátí kolekci procesních objektů. Pokud chcete vyfiltrovat odpověď, přesměrujte výstup na Where-Object. Propojování znamená, že dva nebo více příkazů jsou propojeny pomocí znaku svislé roury |. Výstup z jednoho příkazu se odešle jako vstup pro další příkaz. Výraz filtru pro Where-Object používá operátor -like ke shodování procesů, které začínají písmenem p.

Zkoumání objektů pomocí Get-Member

Jakmile vyhledáte požadovaný cmdlet, chcete se dozvědět více o výstupu, který vytváří. Rutina Get-Member zobrazí typ, vlastnosti a metody objektu. Výstup, který chcete zkontrolovat, přesměrujte do Get-Member.

Get-Process | Get-Member

Výsledek zobrazí vrácený typ jako TypeName a všechny vlastnosti a metody objektu. Tady je výňatek takového výsledku:

TypeName: System.Diagnostics.Process

Name        MemberType     Definition
----        ----------     ----------
Handles     AliasProperty  Handles = Handlecount
Name        AliasProperty  Name = ProcessName
...

Pomocí parametru MemberType můžete omezit vrácené informace.

Get-Process | Get-Member -MemberType Method

PowerShell ve výchozím nastavení zobrazuje jenom několik vlastností. V předchozím příkladu se zobrazily členy Name, MemberType a Definition. Můžete použít Select-Object k zadání vlastností, které chcete zobrazit. Chcete například zobrazit pouze vlastnosti Name a Definition:

Get-Process | Get-Member | Select-Object Name, Definition

Hledání podle typu parametru

Get-Member ukázali jsme, že Get-Process vrací objekty typu Proces . Parametr ParameterType parametru Get-Command lze použít k vyhledání dalších příkazů, které jako vstup přebírají objekty Process .

Get-Command -ParameterType Process
CommandType     Name                         Version    Source
-----------     ----                         -------    ------
Cmdlet          Debug-Process                7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Enter-PSHostProcess          7.1.0.0    Microsoft.PowerShell.Core
Cmdlet          Get-Process                  7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Get-PSHostProcessInfo        7.1.0.0    Microsoft.PowerShell.Core
Cmdlet          Stop-Process                 7.0.0.0    Microsoft.PowerShell.Managem…
Cmdlet          Wait-Process                 7.0.0.0    Microsoft.PowerShell.Managem…

Znalost výstupního typu příkazu vám může pomoct zúžit hledání souvisejících příkazů.

Dodatečné zdroje