Indítsuk el a PowerShellt!

A Windows PowerShell indítása után a régi, megszokott Parancssorhoz (Command Prompt, cmd.exe) hasonló felület jelenik meg a Windows 10/Windows Server 2016 előtti operációsrendszereken. Amint az alábbi ábrán is látható, kísérteties a hasonlóság, nem lesz itt baj, gondosan tartsuk magunktól távol a dokumentációt és próbálkozzunk bátran.

3 . ábra A cmd.exe és a PowerShell

Windows 10-en a konzol is sok újdonságot ad a korábbiakhoz képest, sokkal színesebb a felület:

4 . ábra A Windows 10 PowerShell konzolja

Ami feltűnő, hogy a parancsok különböző szintaktikai elemeit más-más színnel jelöli. A prompt „>” jele pedig pirossá változik, ha a kifejezésünk szintaktikailag helytelen. Továbbá az új konzolban már többsoros kifejezéseket is könnyen tudunk kijelölni, kimásolni és a parancstörténet-tár is okosabban kezeli a többsoros kifejezéseket.

Megjegyzés

A könyvben szereplő képernyőképek és kimásolt szkriptek többsége Windows 7 és Windows Server 2008 R2 verzión születtek. Az esetleges nyomtatás festéktakarékossága okán az alaphelyzet szerinti sötétkék háttérkép előtti fehér betűket kicseréltem fehér háttérkép előtti fekete betűkre. Hogy könnyebben tudjak a példaszkriptek soraira hivatkozni, több helyen az alaphelyzet szerinti

PS C:\Users\Administrator>

promptot lecseréltem

[sorszám] PS C:\

promptra. Így a könyvben szereplő képernyőképek és példaszkriptek formailag nem pont ugyanazt adják, mint ha Ön kipróbálja ezeket a saját gépén.

Kezdetnek próbáljuk ki tehát a megszokott parancsokat, vajon mit szól hozzájuk az új shell.

[1] PS C:\> dir

 

 

    Directory: C:\

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

d----       2009.07.14.      5:20            PerfLogs

d-r--       2009.11.09.     21:23            Program Files

d-r--       2009.11.11.     22:22            Program Files (x86)

d-r--       2009.11.09.     21:15            Users

d----       2009.11.15.     12:35            Windows

-a---       2009.11.11.      0:32        458 users.txt

Amint látható, nem történt semmi meglepő, kaptunk egy mappa- és fájllistát, nagyjából a megszokott módon. Eddig rendben, a nehezén túl is vagyunk, ez is csak egy parancssor. Próbálkozzunk valami nehezebbel, írjuk be mondjuk a következőt:

[2] PS C:\> dir /s

dir : Cannot find path 'C:\s' because it does not exist.

At line:1 char:1

+ dir /s

+ ~~~~~~

    + CategoryInfo          : ObjectNotFound: (C:\s:String) [Get-ChildItem],

   ItemNotFoundException

    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetC

   hildItemCommand

Hát ez már nem jött össze: szép piros hibaüzenet tájékoztat, hogy a C:\s mappa nem létezik. Ez így teljesen igaz is, de ki akart oda menni? (Egyébként teljesen korrekt a hibaüzenet, mivel ha mégis van ilyen mappa, akkor azt gond nélkül kilistázza, vagyis a / karakter a gyökérmappát jelenti.) Mi történik itt? Úgy látszik, mégis segítséget kell kérnünk, de vajon hogyan? Mondjuk, legyen a következő:

[3] PS C:\> help dir

 

NAME

    Get-ChildItem

 

SYNOPSIS

    Gets the items and child items in one or more specified locations.

 

 

SYNTAX

    Get-ChildItem [[-Path] <String[]>] [[-Filter] <String>] [-Exclude <String[

    ]>] [-Force] [-Include <String[]>] [-Name] [-Recurse] [-UseTransaction [<S

    witchParameter>]] [<CommonParameters>]

 

    Get-ChildItem [[-Filter] <String>] [-Exclude <String[]>] [-Force] [-Includ

    e <String[]>] [-Name] [-Recurse] -LiteralPath <String[]> [-UseTransaction

    [<SwitchParameter>]] [<CommonParameters>]

 

 

DESCRIPTION

    The Get-ChildItem cmdlet gets the items in one or more specified locations

    . If the item is a container, it gets the items inside the container, know

Megjegyzés

A PowerShell 3.0 vagy későbbi verzióknál alaphelyzetben nincs telepítve a súgó, így ott csak egy nagyon tömör, csak a szintaxist ismertető help-et kapunk.

Talán meglepő, de a help parancs működik. Talán még meglepőbb, a man parancs is működik! A válaszból viszont az derül ki a NAME alatti sorban, hogy a dir egyáltalán nem is létezik, a mappalistát valójában a Get‑ChildItem nevű parancs produkálta az előbb. Kiderül az is, hogy hogyan kell őt az alkönyvtárakba leküldeni: -recurse, vagy egyszerűen: ‑r kapcsolóval:

[4] PS C:\> dir -r

 

 

    Directory: C:\

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

d----       2009.07.14.      5:20            PerfLogs

d-r--       2009.11.09.     21:23            Program Files

d-r--       2009.11.11.     22:22            Program Files (x86)

d-r--       2009.11.09.     21:15            Users

d----       2009.11.15.     12:35            Windows

-a---       2009.11.11.      0:32        458 users.txt

 

 

    Directory: C:\PerfLogs

 

 

Mode                LastWriteTime     Length Name

----                -------------     ------ ----

d----       2009.07.14.      4:35            Admin

A Get-ChildItem leírását elolvasva joggal kérdezhetjük, hogy miért változott meg az égvilágon minden, ha egyszer ugyanazt a feladatot hajtja végre a Get-ChildItem, mint a jó öreg dir parancs. A válasz pedig egyszerűen az, hogy nem ugyanazt végzi el, nem ugyanúgy, és nem ugyanazzal az eredménnyel! A Get-ChildItem például nemcsak mappákból, hanem számos más adatforrásból is képes listát produkálni, így a regisztrációs adatbázisból, a tanúsítványtárból, stb. is, kimenete pedig korántsem az a lista, amit a képernyőn láttunk.

Ha kiadjuk az alábbi parancsot, szomorúan láthatjuk, hogy help parancs sem létezik, az ő igazi neve Get-Help.

[5] PS C:\> help help

 

NAME

    Get-Help

 

SYNOPSIS

    Displays information about Windows PowerShell commands and concepts.

 

 

SYNTAX

    Get-Help [-Full] [[-Name] <string>] [-Category <string[]>] [-Component

    <string[]>] [-Functionality <string[]>] [-Online] [-Path <string>] [-Ro

    le <string[]>] [<CommonParameters>]

Hogy tovább szaporítsuk a nem létező, de ennek ellenére jól működő parancsok számát, próbáljuk ki a cd parancsot, majd kérjük el az ő súgólapját is. Láthatjuk, hogy az igazi neve Set-Location, és természetesen nemcsak a fájlrendszerben, hanem a regisztrációs adatbázisban, tanúsítványtárban, stb. is remekül működik. Valójában a cd, és a többi nem létező, de működő parancs csupán egy alias, egy becenév, álnév a megfelelő PowerShell parancsra (lásd: Get-Alias), amelyek hivatalos neve cmdlet (ejtsd: kommandlet, magyarul parancsocska).

A következőkben felsorolunk a fenti parancsokkal kapcsolatos néhány egészen egyszerű példát, amelyek között részben a „régi” cmd parancsok megfelelőit, részben az új képességek demonstrációját találhatjuk.

dir *.txt /s

PS C:\> Get-ChildItem -Include *.txt -Recurse

A HKLM/Software ág kilistázása a registryből.

PS C:\> Get-ChildItem registry::HKLM/Software

dir *.exe

PS C:\> Get-ChildItem * -i *.exe

cd q:

PS C:\> Set-Location q:

Jelenlegi pozíció elmentése. Ahogyan a név sugallja, több pozíció is elmenthető egymás „tetejére”, vagyis egy verembe. A Pop-Location mindig a legfelül lévőre tér vissza, majd eldobja azt.

PS C:\> Push-Location

Átállás a HKEY_CURRENT_USER ágra a registryben.

PS C:\> Set-Location HKCU:

Visszaugrás egy korábbi elmentett pozícióra.

PS C:\> Pop-Location

Átállás a tanúsítványtár „meghajtóra”.

PS C:\> Set-Location Cert:

Azért volt néhány elég furcsa külsejű parancs, igaz? Tanúsítványtár meghajtó!? Mi lesz még itt?

Kísérletezzünk tovább! Ha már ilyen szépen tudjuk használni a nem létező parancsokat, próbáljunk ki valami olyat, ami tényleg biztosan nem létezhet:

PS C:\> 1

1

Semmi hibaüzenet, a PowerShell egyszerűen visszaírta a számot a konzolra.

A PowerShell ablakot bezárni az Exit  paranccsal lehet, de ez nem PowerShell cmdlet, nem is alias, hanem ez egy kulcsszó, és mint ilyenről a Get-Help about_Language_Keywords kifejezés futtatása után kapunk bővebb információkat.



Word To HTML Converter