Megosztás a következőn keresztül:


Parancsmag – áttekintés

A parancsmagok a PowerShell-környezetben használt egyszerű parancsok. A PowerShell-futtatókörnyezet a parancssorban megadott automatizálási szkriptek környezetében hívja meg ezeket a parancsmagokat. A PowerShell-futtatókörnyezet programozott módon is meghívja őket a PowerShell API-kon keresztül.

Parancsmagok (cmdletek)

A parancsmagok végrehajtanak egy műveletet, és általában egy Microsoft .NET-objektumot ad vissza a folyamat következő parancsához. A parancsmag egyetlen parancs, amely részt vesz a PowerShell folyamatszemantikájában. Ide tartoznak a bináris (C#) parancsmagok, a speciális szkriptfüggvények, a CDXML és a munkafolyamatok.

Ez az SDK-dokumentáció ismerteti, hogyan hozhat létre C#-ban írt bináris parancsmagokat. A szkriptalapú parancsmagokkal kapcsolatos információkért lásd:

Bináris parancsmag létrehozásához olyan parancsmagosztályt kell implementálnia, amely két speciális parancsmag alaposztály egyikéből származik. A származtatott osztálynak a következőnek kell lennie:

  • Deklaráljon egy attribútumot, amely parancsmagként azonosítja a származtatott osztályt.
  • A nyilvános tulajdonságokat parancsmagparaméterekként azonosító attribútumokkal dekorált nyilvános tulajdonságok definiálása.
  • Felülbírálhat egy vagy több bemeneti feldolgozási módszert a rekordok feldolgozásához.

Az osztályt tartalmazó szerelvényt közvetlenül az Import-Module parancsmaggal töltheti be, vagy létrehozhat egy gazdagépalkalmazást, amely betölti a szerelvényt a System.Management.Automation.Runspaces.InitialSessionState API használatával. Mindkét módszer programozott és parancssori hozzáférést biztosít a parancsmag funkcióihoz.

Parancsmag feltételei

A PowerShell-parancsmag dokumentációjában gyakran az alábbi kifejezéseket használják:

Parancsmag attribútum

Parancsmagosztály parancsmagként való deklarálásához használt .NET-attribútum. Bár a PowerShell számos más, nem kötelező attribútumot használ, a Parancsmag attribútumra van szükség. Az attribútumról további információt parancsmag attribútumdeklarációjánakcímű cikkben talál.

Parancsmag paramétere

A felhasználó vagy a parancsmagot futtató alkalmazás számára elérhető paramétereket meghatározó nyilvános tulajdonságok. A parancsmagok rendelkezhetnek kötelező, elnevezett, pozíciós és kapcsolóval paraméterekkel. A kapcsolóparaméterek lehetővé teszik olyan paraméterek megadását, amelyek kiértékelése csak akkor történik meg, ha a paraméterek meg vannak adva a hívásban. A különböző paraméterekkel kapcsolatos további információkért lásd parancsmag paramétereit.

Paraméterkészlet

Paraméterek egy csoportja, amely ugyanabban a parancsban egy adott művelet végrehajtásához használható. A parancsmagok több paraméterkészlettel is rendelkezhetnek, de minden paraméterkészletnek legalább egy egyedi paraméterrel kell rendelkeznie. A jó parancsmag-kialakítás erősen arra utal, hogy az egyedi paraméter is kötelező paraméter. További információ a paraméterkészletekről: parancsmag paraméterkészletei.

Dinamikus paraméter

Egy paraméter, amely futásidőben lesz hozzáadva a parancsmaghoz. A dinamikus paraméterek általában akkor lesznek hozzáadva a parancsmaghoz, ha egy másik paraméter egy adott értékre van állítva. További információ a dinamikus paraméterekről: Parancsmag dinamikus paraméterei.

Bemeneti feldolgozási módszerek

A System.Management.Automation.Cmdlet osztály a rekordok feldolgozásához használt alábbi virtuális metódusokat biztosítja. Az összes származtatott parancsmagosztálynak felül kell bírálnia az első három módszer valamelyikét:

További információ ezekről a metódusokról: parancsmag bemeneti feldolgozási módszerei.

Parancsmag implementálásakor felül kell bírálnia legalább egy bemeneti feldolgozási módszert. A ProcessRecord() általában az a módszer, amelyet felülbírál, mert a parancsmag által feldolgozott összes rekordhoz meghívják. Ezzel szemben a BeginProcessing() metódust és az EndProcessing() metódust egyszer hívják meg a rekordok előfeldolgozására vagy utófeldolgozására. További információ ezekről a módszerekről: bemeneti feldolgozási módszerek.

ShouldProcess funkció

A PowerShell lehetővé teszi olyan parancsmagok létrehozását, amelyek visszajelzést kérnek a felhasználótól, mielőtt a parancsmag módosítja a rendszert. A szolgáltatás használatához a parancsmagnak deklarálnia kell, hogy támogatja a ShouldProcess funkciót a Parancsmag attribútum deklarálásakor, a parancsmagnak pedig meghívnia kell a System.Management.Automation.Cmdlet.ShouldProcess és System.Management.Automation.Cmdlet.ShouldContinue metódusokat egy bemeneti feldolgozási módszerből. A ShouldProcess funkció támogatásáról további információt a Megerősítés kérésecímű témakörben talál.

Tranzakció

Egyetlen feladatként kezelt parancsok logikai csoportja. A feladat automatikusan meghiúsul, ha a csoport bármelyik parancsa meghiúsul, és a felhasználó dönthet úgy, hogy elfogadja vagy elutasítja a tranzakción belül végrehajtott műveleteket. A tranzakcióban való részvételhez a parancsmagnak deklarálnia kell, hogy támogatja a tranzakciókat a Parancsmag attribútum deklarálásakor. A tranzakciók támogatása a Windows PowerShell 2.0-ban jelent meg. További információ a tranzakciókról: Tranzakciók támogatása.

Hogyan különböznek a parancsmagok a parancsoktól?

A parancsmagok az alábbi módokon különböznek más parancshéj-környezetek parancsaitól:

  • A parancsmagok .NET-osztályok példányai; ezek nem önálló végrehajtható fájlok.
  • A parancsmagok akár egy tucat sornyi kódból is létrehozhatók.
  • A parancsmagok általában nem végeznek saját elemzést, hibabemutatást vagy kimeneti formázást. Az elemzést, a hibabemutatást és a kimeneti formázást a PowerShell-futtatókörnyezet kezeli.
  • A parancsmagok nem szövegfolyamokból, hanem a folyamatból dolgozzák fel a bemeneti objektumokat, a parancsmagok pedig általában kimenetként továbbítják az objektumokat a folyamatnak.
  • A parancsmagok rekordorientáltak, mert egyszerre egyetlen objektumot dolgoznak fel.

Parancsmag alaposztályai

A Windows PowerShell az alábbi két alaposztályból származó parancsmagokat támogatja.

  • A parancsmagok többsége a System.Management.Automation.Cmd let alaposztályból származó .NET-osztályokon alapul. Ebből az osztályból származtatva a parancsmagok a Windows PowerShell-futtatókörnyezet minimális függőségi készletét használhatják. Ennek két előnye van. Az első előnye, hogy a parancsmag-objektumok kisebbek, és kevésbé valószínű, hogy a PowerShell-futtatókörnyezet változásai befolyásolják önt. A második előnye, hogy ha szükséges, közvetlenül létrehozhatja a parancsmagobjektum egy példányát, majd közvetlenül meghívhatja ahelyett, hogy a PowerShell-futtatókörnyezeten keresztül invokálna.

  • Az összetettebb parancsmagok a System.Management.Automation.PSCmdlet alaposztályból származó .NET-osztályokon alapulnak. Ebből az osztályból származva sokkal több hozzáférést biztosít a PowerShell-futtatókörnyezethez. Ez a hozzáférés lehetővé teszi a parancsmag számára a szkriptek hívását, a szolgáltatók elérését és az aktuális munkamenet-állapot elérését. (Az aktuális munkamenet állapotának eléréséhez lekérheti és beállíthatja a munkamenet változóit és beállításait.) Az osztályból származó parancsmag azonban növeli a parancsmagobjektum méretét, és ez azt jelenti, hogy a parancsmag szorosabban kapcsolódik a PowerShell-futtatókörnyezet aktuális verziójához.

Általánosságban elmondható, hogy ha nincs szüksége a PowerShell-futtatókörnyezethez való kiterjesztett hozzáférésre, a System.Management.Automation.Cmdlet osztályból kell származnia. A PowerShell-futtatókörnyezet azonban kiterjedt naplózási képességekkel rendelkezik a parancsmagok végrehajtásához. Ha a naplózási modell a naplózástól függ, megakadályozhatja, hogy a parancsmag végrehajtása egy másik parancsmagon belülre lásson, ha a System.Management.Automation.PSCmdlet osztályból származik.

Parancsmag-attribútumok

A PowerShell több .NET-attribútumot határoz meg, amelyek a parancsmagok kezelésére és a PowerShell által biztosított általános funkciók megadására szolgálnak, amelyeket a parancsmag megkövetelhet. Az attribútumok például egy osztály parancsmagként való kijelölésére, a parancsmag paramétereinek megadására, valamint a bemenet érvényesítésének igénylésére szolgálnak, hogy a parancsmagfejlesztőknek ne kelljen implementálniuk ezt a funkciót a parancsmagkódjukban. További információ az attribútumokról: PowerShell-attribútumok.

Parancsmagok nevei

A PowerShell a parancsmagok elnevezéséhez használ egy ige- és főnévpárt. A PowerShellben található Get-Command parancsmag például a parancshéjban regisztrált összes parancsmag lekérésére szolgál. Az ige azonosítja a parancsmag által végrehajtott műveletet, a főnév pedig azt az erőforrást, amelyen a parancsmag végrehajtja a műveletet.

Ezek a nevek akkor lesznek megadva, ha a .NET-osztály parancsmagként van deklarálva. A .NET-osztály parancsmagként való deklarálásáról további információt Parancsmag attribútumdeklarációjacímű témakörben talál.

Parancsmagkód írása

Ez a dokumentum két módszert kínál a parancsmagkód írásának felderítésére. Ha inkább a kódot szeretné sok magyarázat nélkül látni, tekintse meg Parancsmagkód példáit. Ha további magyarázatot szeretne kapni a kódról, tekintse meg a GetProc-oktatóanyagot, StopProc-oktatóanyagot, vagy SelectStr-oktatóanyagot témaköröket.

A parancsmagok írására vonatkozó irányelvekkel kapcsolatos további információkért lásd parancsmagok fejlesztési irányelveit.

Lásd még:

PowerShell-parancsmagok alapfogalmai

PowerShell-parancsmag írása

PowerShell SDK