Objevte PowerShell

PowerShell je prostředí příkazového řádku a skriptovací jazyk v jednom. PowerShell začal ve Windows, který pomáhá automatizovat úlohy správy. Teď běží na různých platformách a dá se použít pro různé úlohy.

Tím, že PowerShell je jedinečný, je to, že přijímá a vrací objekty .NET místo textu. Tato funkce usnadňuje připojení různých příkazů v kanálu.

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

Využití PowerShellu se od doby, kdy se jednalo pouze o Windows, vzrostlo. Stále se používá pro automatizaci úloh Windows, ale v současné chvíli ho můžete použít pro ú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 o cloudových prostředcích a také 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.

Existuje mnoho dalších oblastí použití, ale předchozí seznam vám napoví, že PowerShell má dlouhou cestu.

Kdo používá PowerShell?

PowerShell je výkonný nástroj, který pomáhá lidem pracovat v mnoha rolích. PowerShell tradičně používá role systémového Správa istratoru, ale nyní ji používají lidé, kteří volají jako DevOps, Cloud Ops a dokonce i vývojáři.

Rutiny PowerShell

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

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

Použití rutin k prozkoumání PowerShellu

Když poprvé vyzvednete PowerShell, může se zdát zastrašující, protože se zdá, že se toho tolik naučíte. Prostředí PowerShell je navržené tak, aby vám pomohlo se trochu naučit, jak potřebujete.

PowerShell obsahuje rutiny, které vám pomůžou zjistit PowerShell. Pomocí těchto tří rutin můžete zjistit, jaké příkazy jsou k dispozici, co dělají a jaké typy 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á. To vám pomůže vybrat příslušný příkaz a pojmenovat ho, pokud ho vytváříte.
  • 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)

Sloveso je důležitým konceptem v PowerShellu. Jedná se o standard pojmenování, který většina rutin sleduje. 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 příkazů, použijte rutinu Get-Verb :

Get-Verb

Rutina 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
...

Vyhledání příkazů pomocí příkazu Get-Command

Rutina Get-Command vrátí seznam všech dostupných příkazů nainstalovaných ve vašem systému. Seznam, který dostanete zpět, je poměrně 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. Pří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. Příkaz by měl být jednou z hodnot vrácených rutinou Get-Verb . Úplně vpravo je část příkazu podstatná část. Podstatné jméno může být cokoli.

  • Filtrujte sloveso. V příkazu Get-Processje Getčást slovesa . 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.

  • Filtrování podstatných jmen. V příkazu Get-Processje Processčást podstatného jména . Pokud chcete filtrovat podstatné jméno, použijte parametr podstatné jméno . 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 rutin 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 příkazů dostupných 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á pna .

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

    Rutina Get-Process vrátí kolekci procesních objektů. Pokud chcete vyfiltrovat odpověď, předáte výstup na Where-Object. Potrubí 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žití operátoru -like ke shodě procesů, které začínají písmenem p.

Zkoumání objektů pomocí funkce Get-Member

Jakmile budete schopni najít požadovanou rutinu, budete se chtít dozvědět více o výstupu, který vytváří. Rutina Get-Member zobrazí typ, vlastnosti a metody objektu. Výstup, který chcete zkontrolovat Get-Member, nasudíte .

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í. Předchozí příklad zobrazil a NameMemberTypeDefinition členy. Můžete použít Select-Object k zadání vlastností, které chcete zobrazit. Chcete například zobrazit pouze vlastnosti Name a Definition vlastnosti:

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ů.

Další materiály