Posted in: Základy PowerShellu

Nápověda PowerShellu

PowerShell je MS produktem s nejlepší dokumentací. Hodně tomu napomáhá silná komunita, ale také fakt, že PowerShell prochází všemi produkty Microsoftu. Pojďme se tedy podívat, jak pracovat s nápovědou, tedy dokumentací.

Před prvním užitím je dobré nápovědu aktualizovat:

Update-Help -Force

Nyní nám již nic nebrání otevřít si okno nápovědy

Get-Help -ShowWindow

Na tomto místě by se slušelo říct, že PowerShell má dva základní druhy nápovědy:

  1. Nápovědu k příkazům
  2. Tématickou nápovědu

Nápovědu k příkazu spustíme tak, že za příkaz nápovědy dáme příkaz, k němuž hledáme nápovědu. Opět na příkladu, řekněme, že chci zjistit nápovědu k práci s procesy ve Windows:

get-help process

Nyní vidím příkazy pro práci s procesy, např. pro výpis procesů vidím, že slouží příkaz get-process a pokud budu chtít další informace o tomto příkazu zadám si 

get-help get-process -ShowWindow
#nebo prop výpis v konzoli
get-help get-process

Kdo by chtěl v konzoli podrobnou nápovědu, pak využije příkaz:

get-help get-process -Full

Komu se naopak nechce číst celou nápovědu, ale chce vidět jen příklady použití, pak může využít:

get-help get-process -examples

Příklady užití příkazu přikládám z vlastního modulu:

Asi nejzajímavější možností, pokud je k dispozici konektivita, je zobrazení nápovědy online pomocí výchozího webového prohlížeče:

get-help get-process -online

A jak je to s tématickou nápovědou? Inu dost obdobně jako s tou k cmdletům. Základem je opět příkaz get-help, ale másto názvu příkazu nebo odvětví zadávám about_ a tématický okruh. V tomto případě již důrazně doporučuji otevírat nápovědu v samostatném okně. Opět si vše ukažme na příkladu, budou nás zajímat rozšíření PowerShellu, kterým se říká moduly:

get-help about_modules -ShowWindow

Pokud se vám zdá psát get-help zdlouhavé, tak mě také, proto prozradím zkratku, stačí napsat man. Připomíná vám to Bash? Nedivím se, jde o jednu ze zkratek, kterou PowerShell právě z Bashe převzal ;). Případně se dá syntaxe převzít z CMD a lze pro základní nápovědu psát (vždy základní výpis do konzoly):

get-process -?

Tvorba nápovědy

Vlastní skripty, funkce a moduly můžeme rovněž vybavit integrovanou nápovědou. Pro skripty a moduly publikované v PowerShell galerii je povinností nápovědu obsahovat. Pokud využíváme pro psaní PowerShell ISE, tak nám s nápovědou pomohou snipety, ale i bez nich to není nic těžkého, jde vlastně o blokový komentář, který má předepsaný tvar.

Nápověda nemusí obsahovat všechny bloky uvedené na obrázku (může navíc obsahovat .NOTE [informace o autorovi a verzi] apod.), úplný výčet klíčových slov a jejich význam je v dokumentaci. Častěji má nápověda podobu následujícího příkladu:

<#
.Synopsis
   kontrola systémovýh souborů.
.DESCRIPTION
   kontrola systémových souborů nativními nástroji scf a dism
.EXAMPLE
   Check-SystemFiels -scannow
   provede příkaz sfc /scannow
.EXAMPLE
   Check-SystemFiels -scanfile -Path c:\windows\system32\kernel32.dll
   Provede kontrolu integrity a pokusí se o opravu souboru kernel32.dll
#>

Pokud jsou komentáře u definic parametrů, pak výsledná nápověda vypadá následovně:

Synopsis
    kontrola systémovýh souborů.

Description
    kontrola systémových souborů nativními nástroji scf a dism


Parameters
    -path <String>
        Určuje cestu k souboru, který má být verifikován nebo opraven

        Required?                    false
        Position?                    1
        Default value                
        Accept pipeline input?       true (ByPropertyName)
        Accept wildcard characters?  false

    -scannow <SwitchParameter>
        Spustí kontrolu systémových souborů běžícího systému, vede na sfc /scannow

        Required?                    false
        Position?                    named
        Default value                False
        Accept pipeline input?       false
        Accept wildcard characters?  false

    -verifyonly <SwitchParameter>
        Provede kontrolu bez pokusů o opravu poškozeného souboru, vede na sfc /verifyonly

        Required?                    false
        Position?                    named
        Default value                False
        Accept pipeline input?       false
        Accept wildcard characters?  false

    -scanfile <SwitchParameter>
        Nastavuje nástroj sfc do móduz kontroly konkrétního soubooru, vždy kombinován s parametrem Path

        Required?                    false
        Position?                    named
        Default value                False
        Accept pipeline input?       false
        Accept wildcard characters?  false

    -offline <SwitchParameter>
        Říká, že se bude verifikovat jiná, nežli běžící instance systému Windows, kombinuje se s parametry offbootdir a offwindir

        Required?                    false
        Position?                    named
        Default value                False
        Accept pipeline input?       false
        Accept wildcard characters?  false

    -verifyfile <SwitchParameter>
        kontrola souboru

        Required?                    false
        Position?                    named
        Default value                False
        Accept pipeline input?       false
        Accept wildcard characters?  false

    -offbootdir <String>
        U offline kopie systému Windows říká, který disk je její systémový

        Required?                    false
        Position?                    named
        Default value                
        Accept pipeline input?       false
        Accept wildcard characters?  false

    -offwindir <String>
        U offline kopie systému Windows udává její systémový adresář

        Required?                    false
        Position?                    named
        Default value                
        Accept pipeline input?       false
        Accept wildcard characters?  false

    -store <SwitchParameter>
        pomocí nástroje DISM provede sken a následně opravu systémových balíčů běžící kopie systému Windows

        Required?                    false
        Position?                    named
        Default value                False
        Accept pipeline input?       false
        Accept wildcard characters?  false



Syntax
    Check-SystemFiles [[-path] <String>] [-scannow ] [-verifyonly ] [-scanfile ] [-offline ] [-verifyfile ] [-offbootdir <String>] [-offwindir <String>] [-store ] [<CommonParameters>]


Examples
    -------------------------- EXAMPLE 1 --------------------------
    PS C:\>Check-SystemFiels -scannow
    
    provede příkaz sfc /scannow




    -------------------------- EXAMPLE 2 --------------------------
    PS C:\>Check-SystemFiels -verifyonly
    
    provede příkaz sfc /verifyonly - tedy pouze kontrolu bez oprav




    -------------------------- EXAMPLE 3 --------------------------
    PS C:\>Check-SystemFiels -scanfile -Path c:\windows\system32\kernel32.dll
    
    Provede kontrolu integrity a pokusí se o opravu souboru kernel32.dll




    -------------------------- EXAMPLE 4 --------------------------
    PS C:\>Check-SystemFiels -offline -scanfile -Path d:\windows\system32\kernel32.dll -offbootdir d: -offwindir d:\windows
    
    Provede kontrolu integrity a pokusí se o opravu souboru kernel32.dll z offline image na disku d:




    -------------------------- EXAMPLE 5 --------------------------
    PS C:\>Check-SystemFiels -store
    
    Provede kontrolu systému příkazem dism /online /cleanup-image /restorehealth

Jak je vidět, nápovědu je možné (až na klíčová slova definující jednotlivé sekce) psát v mateřském jazyce, ale pro PowerShell galerii je potře mít nápovědu anglicky, teoreticky pak můžete mít značkou jazyka odlišený odstavec mateřském jazyce v každé sekci.

Back to Top