A PowerShell felfedezése

A PowerShell egy parancssori rendszerhéj és egy szkriptnyelv. A PowerShell a Windowson indult el, hogy megkönnyítse a felügyeleti feladatok automatizálását. Most platformfüggetlen, és különböző feladatokhoz használható.

A PowerShell egyedivé teszi, hogy szöveg helyett .NET-objektumokat fogad el és ad vissza. Ez a funkció megkönnyíti a különböző parancsok csatlakoztatását egy folyamatban.

Mire használható a PowerShell?

A PowerShell használata azóta növekszik, hogy windowsos volt. Továbbra is a Windows-feladatautomatizáláshoz használják, de ma a következő feladatokhoz használhatja:

  • 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. Ezzel 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álatnak még sok más területe van, de az előző lista arra utal, hogy a PowerShell hosszú utat tett meg.

Ki használja a PowerShellt?

A PowerShell egy hatékony eszköz, amely számos szerepkörben dolgozó felhasználóknak nyújt segítséget. A PowerShellt hagyományosan a System Rendszergazda istrator szerepkör használja, de most már devOps-nak, cloud ops-nak, sőt fejlesztőknek hívják magukat.

PowerShell cmdlets

A PowerShell több száz előre telepített parancsot tartalmaz. A PowerShell-parancsokat parancsmagoknak nevezzük (ejtsd: command-lets).

Az egyes parancsmagok neve egy Verb-Noun párból áll. For example, 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 annyira tanulni kell. A PowerShell úgy lett kialakítva, hogy segítsen egy kicsit egyszerre tanulni, ahogy szüksége van rá.

A PowerShell olyan parancsmagokat tartalmaz, amelyek segítenek a PowerShell felderítésében. A három parancsmag használatával 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, amelyeket a legtöbb parancs betart. A válasz tartalmazza ezeknek az igéknek a leírását. Mivel a legtöbb parancs ezt az elnevezési konvenciot követi, elvárásokat támaszt a parancsok végrehajtásával kapcsolatban. Ez segít kiválasztani a megfelelő parancsot, és hogy mit nevezhet el egy parancsnak, ha létrehoz egyet.
  • Get-Command. Ez a parancs lekéri a számítógépre 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. A parancs argumentumként való meghívása egy parancs nevével egy súgóoldalt jelenít meg, amely a parancs különböző részeit ismerteti.

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

Parancs

Az ige a PowerShell egyik fontos fogalma. 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 ötlet az, hogy az Igét mondja ki, hogy mit próbál tenni, például olvasni vagy esetleg módosítani az adatokat. A PowerShell az igék szabványosított listáját tartalmazza. Az összes lehetséges igék teljes listájának lekéréséhez használja a Get-Verb parancsmagot:

Get-Verb

A parancsmag az igék hosszú listáját adja vissza. A leírás kontextust biztosít az ige rendeltetéséhez. A kimenet első néhány sora a következő:

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

Parancsok keresése a Get-Command paranccsal

A Get-Command parancsmag a rendszeren telepített összes elérhető parancs listáját adja vissza. A visszakapott lista elég nagy. A válasz paraméterek vagy segéd parancsmagok használatával történő szűrésével korlátozhatja a visszaadandó információk mennyiségét.

Név szűrése

Különböző paraméterekkel szűrheti a kimenetet Get-Command . A szűrés lehetővé teszi bizonyos tulajdonságokkal rendelkező parancsok keresését. A Név paraméterrel név szerint kereshet meg egy adott parancsot.

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

Mi a teendő, ha meg szeretné találni a folyamatokkal működő összes parancsot? A sztring más formáihoz helyettesítő karaktert * is használhat. Például:

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

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

Vannak más paraméterek is, amelyek az igére és a főnévre szűrnek. A parancs nevének igerésze a bal szélső rész. Az igének a parancsmag által visszaadott Get-Verb értékek egyikének kell lennie. A parancsok jobb szélső része a főnév. A főnév bármi lehet.

  • Szűrés az igére. A parancsban Get-Processaz igerész a következő Get. Az igerészre való szűréshez használja az Ig paramétert.

    Get-Command -Verb 'Get'
    

    Ez a példa felsorolja az összes parancsot, amely az igét Gethasználja.

  • Szűrjön főnévre. A parancsban Get-Processa főnév a következő Process. A főnévre való szűréshez használja a Főnév paramétert. Az alábbi példa az összes főnévvel rendelkező parancsmagot adja vissza a betűvel kezdődően U.

    Get-Command -Noun U*
    

A paraméterek kombinálásával szűkítheti a keresést, például:

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

Találatok szűrése segítő parancsmagokkal

Az eredmények szűréséhez más parancsmagokat is használhat.

  • Select-Object. Ez a sokoldalú parancs segít kiválasztani egy vagy több objektum adott tulajdonságait. A visszakapott elemek számát is korlátozhatja. Az alábbi példa az aktuális munkamenetben elérhető első 5 parancs Név és Forrás tulajdonságértékeit adja vissza.

    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
    

    További információ: Select-Object.

  • Where-Object. Ez a parancsmag lehetővé teszi a visszaadott objektumok szűrését a tulajdonságok értékei alapján. A parancs egy tulajdonság értékét tesztelő kifejezést vesz fel. Az alábbi példa az összes folyamatot visszaadja, ahol a ProcessName kezdő érték a pkövetkező: .

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

    A Get-Process parancsmag folyamatobjektumok gyűjteményét adja vissza. A válasz szűréséhez a kimenetet a következőre kell átirányítaniWhere-Object: . A piping azt jelenti, hogy két vagy több parancs egy cső | karakteren keresztül csatlakozik. Az egyik parancs kimenete a következő parancs bemeneteként lesz elküldve. A szűrőkifejezés Where-Object az operátort használja a -like betűvel pkezdődő folyamatok egyeztetésére.

Objektumok felfedezése a Get-Member használatával

Miután megtalálta a kívánt parancsmagot, többet szeretne tudni arról, hogy milyen kimenetet hoz létre. A Get-Member parancsmag megjeleníti egy objektum típusát, tulajdonságait és metódusait. A vizsgálandó kimenet becsúszása Get-Member.

Get-Process | Get-Member

Az eredmény megjeleníti a visszaadott típust, valamint 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
...

A MemberType paraméterrel korlátozhatja a visszaadott adatokat.

Get-Process | Get-Member -MemberType Method

Alapértelmezés szerint a PowerShell csak néhány tulajdonságot jelenít meg. Az előző példában a tagok és Definition a Nametagok MemberType láthatók. Megadhatja Select-Object a megtekinteni kívánt tulajdonságokat. Például csak a Name tulajdonságokat Definition szeretné megjeleníteni:

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

Keresés paramétertípus szerint

Get-MemberGet-Process folyamat típusú objektumokat ad vissza. A ParameterType paraméter használható Get-Command más parancsok megkeresésére, amelyek bemenetként folyamatobjektumokat használnak.

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…

A parancsok kimeneti típusának ismerete segíthet szűkíteni a kapcsolódó parancsok keresését.

További információforrások