A PowerShell felfedezése

A PowerShell egy parancssori felület és egy szkriptelési nyelv egyben. A PowerShell a Windowson indult el. Az adminisztrációs feladatok feladatautomatizálását hivatott elősegíteni, de mára platformfüggetlené vált, és számos feladathoz használható.

A PowerShellt az teszi egyedivé, hogy szöveg helyett .NET-objektumokat fogad el és ad vissza. Ez megkönnyíti a különböző parancsok összekapcsolása sorozatokban , folyamatokban.

Még akkor is előfordulhat, hogy egy kicsit meg kell masszíroznia az eredményeket.

Mire használható a PowerShell?

A PowerShell használata azóta nőtt, hogy windowsos volt. Továbbra is a Windows-feladatautomatizáláshoz használják, de ma számos különböző feladathoz használhatja, például:

  • Felhőfelügyelet. A PowerShell a felhőbeli erőforrások kezelésére használható. Lekérheti például a felhőbeli erőforrásokra vonatkozó információkat, valamint frissítheti vagy üzembe helyezheti az új erőforrásokat.
  • CI/CD. A folyamatos integrációs/folyamatos üzembehelyezési folyamat részeként is használható.
  • Az Active Directory és az Exchange feladatainak automatizálása. Segítségével szinte bármilyen feladatot automatizálhat Windows rendszeren, például felhasználókat hozhat létre az Active Directoryban és postaládákat az Exchange-ben.

A használat több területet is tartalmaz, de az előző lista arra utal, hogy a PowerShell hosszú utat tett meg.

Ki használja a PowerShellt?

A PowerShell nagyon hatékony, és sok ember, akik számos szerepkörben dolgoznak, kihasználhatják a használatát. A PowerShellt hagyományosan a rendszergazdai szerepkör használta, de most már a DevOpsnak, a Cloud Opsnek és még a fejlesztőknek is nevezik magukat.

PowerShell-parancsmagok

A PowerShell több száz előre telepített parancsot tartalmaz. A PowerShell-parancsokat parancsmagoknak nevezzük; parancs-lets kifejezésként van kihangsúlyva.

Az egyes parancsmagok neve egy ige-főnév párból áll. Például: Get-Process. Ez az elnevezési konvenció megkönnyíti a parancsmagok megértését. Emellett megkönnyíti a keresett parancs megkeresését is. Ha használni kívánt parancsmagot keres, szűrhet az igére vagy a főnévre.

Parancsmagok használata a PowerShell megismeréséhez

Amikor először veszi fel a PowerShellt, az ijesztőnek tűnhet, mivel úgy tűnik, hogy sok tanulnivalója van. A PowerShell úgy lett kialakítva, hogy segítsen egy kicsit egyszerre tanulni, amikor szüksége van rá.

A PowerShell olyan parancsmagokat tartalmaz, amelyek segítenek felderíteni a PowerShellt. Ezzel a három parancsmaggal megtudhatja, hogy milyen parancsok érhetők el, mit tesznek, és milyen típusokon működnek.

  • Get-Verb. A parancs futtatása azoknak az igéknek a listáját adja vissza, amelyekhez a legtöbb parancs igazodik. A válasz tartalmazza ezeknek az igéknek a leírását. Mivel a legtöbb parancs ezt az elnevezést követi, elvárásokat állít be a parancsok végrehajtásával kapcsolatban. Így kiválaszthatja a megfelelő parancsot, és hogy mi legyen a parancs neve, ha létrehoz egyet.
  • Get-Command. Ez a parancs lekéri a számítógépen telepített összes parancs listáját.
  • Get-Member. Objektumalapú kimeneten működik, és képes felderíteni, hogy milyen objektumok, tulajdonságok és metódusok érhetők el egy parancshoz.
  • Get-Help. Ha ezt a parancsot argumentumként használja egy parancs nevével, megjelenik egy súgóoldal, amely leírja a parancs különböző részeit.

Ezekkel a parancsokkal szinte bármit megtalálhat, amit tudnia kell a PowerShellről.

Művelet

Az igék fontos fogalmak a PowerShellben. Ez egy elnevezési szabvány, amelyet a legtöbb parancsmag követ. Ez egy elnevezési szabvány is, amely a saját parancsok írásakor várható. Az elképzelés az, hogy az Igével ki kell mondania, hogy mit szeretne tenni, például elolvasni vagy esetleg módosítani az adatokat. A PowerShell az igék szabványosított listáját tartalmazza. Az összes lehetséges művelet teljes listájának lekéréséhez használja a Get-Verb következő parancsmagot:

Get-Verb

A futtatás kimenete az igék hosszú listája. Ami informatív a válaszról, az az, hogy több kontextust is mutat, mit kell tennie egy ilyen ige. A kimenet első sora a következő:

Verb        AliasPrefix Group          Description
----        ----------- -----          -----------
Add         a           Common         Adds a resource to a container, or attaches an item to ano…

Parancsok keresése Get-Command

A Get-Command parancsmag a rendszeren telepített összes elérhető parancs listáját adja vissza. Az a lista, amit visszakapsz, elég nagy. A parancsok könnyebb megtalálásához korlátozhatja a visszakapott információk mennyiségét. A választ paraméterek vagy segédparancsmagok használatával szűrheti.

Név szűrése

A kimenetet Get-Commandkülönböző paraméterekkel szűrheti. Az ilyen szűrés a parancs egy adott tulajdonságának lekérdezésére vonatkozik. Az ötlet az, hogy meg kell adnia, hogy melyik tulajdonságra szeretne szűrni, majd meg kell adnia egy sztringet, amellyel egyezni szeretne. Ezért az alábbihoz hasonló összehasonlítást fog kapni:

Get-Command -Name '*Process'

Ezen a ponton a szűrés pontos egyezést próbál végrehajtani a megadott sztringargumentumtal. Ha nagyobb rugalmasságot szeretne, használhat helyettesítő karaktereket *is, amelyek a mintaegyezést végzik. Az alábbi kód az összes parancsot megkeresi, amelynek a neve folyamattal végződik:

Fent a szűréshez használt paraméter -Name . -NameEzen kívül szűrhet például a következőkre -ParameterName-Typeis.

Szűrés főnévre és igére

Láthatta, hogyan szűrhet rá -Name, és hogy más paraméterekre is szűrhet. Az igére és a főnévre is szűrhet. Az ilyen szűrés a parancs nevének egy részét célozza meg.

  • Szűrés az igére. A parancs nevének igerésze a bal szélső rész. A parancsban Get-Processaz igerész .Get Az igerészre való szűréshez adja meg -Verb az alábbihoz hasonló paramétert:

    Get-Command -Verb 'Get'
    

    A fenti parancs felsorolja az összes parancsot, ahol az igerész található Get.

  • Szűrjön a főnévre. A parancs jobb szélső része a főnév része. Ahol az igének a meghívásból Get-Verbvisszaadott igék közé kell tartoznia, a főnév bármi lehet. A parancsban Get-Processa főnév rész .Process A főnévre való szűréshez adja meg -Noun paraméterként és sztringargumentumként az alábbi módon:

    Get-Command -Noun U*
    

Ha csak az igét vagy a főnevet használja a szűréshez, az még mindig nagy eredményhez vezethet. A keresés szűkítéséhez érdemes kombinálni a két paramétert az alábbi példához hasonlóan:

Get-Command -Verb Get -Noun U*

A fentiek eredménye így néz ki:

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
Cmdlet          Get-UsageAggregates          2.0.0      Az.Billing

Ezáltal a kimenetet meglehetősen szűkre szűkítette az igék és a nevek ismeretében.

Segédparancsmagok használata az eredmények szűréséhez

Amellett, hogy paramétereket használ a szűréshez, parancsokkal is segíthet ebben a feladatban. Íme néhány parancs, amely szűrőkként működhet:

  • Select-Object. Ez egy nagyon sokoldalú parancs, amely segít kiválasztani egy vagy több objektum adott tulajdonságait. Emellett a paraméterek használatával korlátozhatja a visszakapott választ. Íme egy példa arra, Select-Object hogy a rendszer korlátozott számú rekordot kér:

    Get-Command | Select-Object -First 3
    

    A fenti eredmény a három első parancs, felülről számítva. Az eredmény így néz ki:

    CommandType     Name                                               Version    Source
    -----------     ----                                               -------    ------
    Alias           Add-AdlAnalyticsDataSource                         1.0.2      Az.DataLakeAnalytics
    Alias           Add-AdlAnalyticsFirewallRule                       1.0.2      Az.DataLakeAnalytics
    Alias           Add-AdlStoreFirewallRule                           1.3.0      Az.DataLakeStore
    

    Érdemes tovább vizsgálni ezt a parancsot, mivel sokkal több docs Select-Object

  • Where-Object. A where objektum segít objektumokat kijelölni egy gyűjteményből a tulajdonságok értékei alapján. A parancs egy olyan kifejezést vesz fel, amelyben ki tudja fejezni, hogy melyik oszlop/oszlopok melyik értékekkel egyeznek. Az összes olyan folyamatobjektum megkereséséhez, ahol a ProcessName kezdet a következő p, használhatja Where-Object a következőt:

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

    Fent a Get-Process parancsmag folyamatobjektumok gyűjteményét állítja elő. A válasz szűréséhez hajtsa végre a parancsot Where-Object. A piping azt jelenti, hogy két vagy több parancs egy cső | karakteren keresztül csatlakozik. Az elképzelés az, hogy az egyik parancs kimenete a következő parancs bemeneteként szolgál, balról jobbra olvasott módon. A Where-Object szűrő egy kifejezést használ. A kifejezés egy -like helyettesítő karaktert tartalmazó operátort és sztringargumentumot használ.

Objektumok felfedezése Get-Member

Miután megtalálta a kívánt parancsmagot, többet szeretne tudni arról, hogy mit hoz létre, a kimenetet. A kimenet több okból is érdekes, például:

  • Önálló. Előfordulhat, hogy csak egy parancsmagot futtat, és valamilyen jelentésben szeretné megjeleníteni a kimenetet. A kérdés az, hogy a parancs létrehoz-e önnek megfelelő kimenetet, vagy módosítania kell azt.
  • Folyamathoz használva. A PowerShellben gyakori, hogy több parancsot csatlakoztat egy folyamathoz, adatokat szeretne beolvasni, szűrni és végül átalakítani. Ahhoz, hogy egy parancs beleférjen egy folyamatba, meg kell vizsgálnia, hogy milyen bemenetet és kimenetet állít elő. Az elképzelés az, hogy egy parancs kimenetét egy másik parancs bemeneteként használja a rendszer.

A Get-Member parancsmag megjeleníti az eredményobjektum típusát, tulajdonságait és metódusait. A vizsgálni kívánt kimenet átirányítása Get-Member.

Get-Process | Get-Member

Az eredmény megjeleníti a visszaadott típust, majd TypeName az objektum összes tulajdonságát és metódusát. Íme egy részlet egy ilyen eredményből:

TypeName: System.Diagnostics.Process

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

Egy objektum általában rengeteg tulajdonsággal és metódusokkal rendelkezik, így könnyebben megtalálhatja, amit keres, szűrheti az eredményeket. A paraméterrel -MemberTypemegadhatja például az összes metódust, például az alábbi példában:

Get-Process | Get-Member -MemberType Method

Amikor választ kap, a PowerShell általában csak néhány tulajdonságot jelenít meg. A fenti válaszban , NameMemberType és Definition megjelent. A megjelenítés módosításához használja a parancsmagot Select-Object. Select-Object A segítségével megadhatja, hogy mely oszlopok jelenjenek meg. Megadhatja az oszlop nevét, egy vesszővel tagolt listát vagy egy helyettesítő karaktert *. Íme egy példa arra, hogy a rendszer hol Select-Object kéri le a következőt NameDefinition:

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

Keresés típus szerint

A kívánt parancs keresésének egy másik módja az, ha olyan parancsokat keres, amelyeket az összes azonos típuson futtat. Amikor használta Get-Member, a válasz első sora a visszaadott típust kapta:

TypeName: System.Diagnostics.Process

Most már használhatja ezt a típust, és az alábbihoz hasonló parancsokat kereshet:

Get-Command -ParameterType Process

A fentiek meghívásának eredménye egy lista, amely kizárólag a Process következő típuson működő parancsokat tartalmazza:

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…

Amint láthatja, a parancsok típusának ismeretében nagy mértékben szűkítheti a keresést olyan parancsok után, amelyek érdekesek lehetnek az Ön számára.

Gyakorlat – az első parancs meghívása

Ebben a gyakorlatban megtanulhatja, hogyan futtathatja az első parancsot.

  1. Indítsa el a PowerShell-konzolt a következő beírásával pwsh:

    pwsh
    
  2. Futtassa a következőt $PSVersionTable.PSVersion:

    $PSVersionTable.PSVersion
    

    A kimenet a következőhöz hasonló:

    Major  Minor  Patch  PreReleaseLabel BuildLabel
    -----  -----  -----  --------------- ----------
    7      1      0
    

    Gratulálunk, sikeresen futtatta az első parancsot, és információt tudott kapni arról, hogy a PowerShell melyik verziója van telepítve a rendszeren.

Ebben a gyakorlatban az a cél, hogy többet tudjon meg egy parancsról. Ennek során olyan dolgokat is megtalálhat, mint például hogy milyen típuson működik, és milyen más hasonló parancsok működnek ugyanazon a típuson.

  1. Győződjön meg arról, hogy rendelkezik egy elindított PowerShell-felülettel

  2. Futtassa a Get-Process parancsmagot:

    Get-Process | Get-Member | Select-Object TypeName -Unique
    

    A kimenet az alábbihoz hasonló:

    TypeName
    --------
    System.Diagnostics.Process
    --------
    

    A visszaadott típusok a parancs Get-Commandáltal visszaadott típusok. Ezen a ponton már megtudhatja, hogy milyen más parancsok is működnek ezeken a típusokon.

  3. Futtassa a Get-Command parancsmagot:

    Get-Command -ParameterType Process
    

    A kimenet az alábbihoz hasonló:

    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…
    

    Gratulálunk, sikerült más parancsokat találnia, amelyek ugyanazon a típuson Processműködnek. A használat Get-Member jó kiindulási pont annak megértéséhez, hogy milyen más parancsokat érdemes megnéznie a következő lépésben.

Összefoglalás

Ebben az első részben megtanulta, hogy mi a PowerShell, és milyen területeken használható. Ön, ahol aztán tanított parancsmagok és különösen Get-Command, Get-Verb és Get-Member. A tetszetős parancsmagok ismerete fontos, mivel megtanítja a tanulásra. A következő részben megtudhatja, hogyan használhatja a hatékony súgórendszert.

További források