Parancsmag – áttekintés

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

Parancsmagok

A parancsmagok végrehajtják a 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 folyamat-szemantikáját. Ez magában foglalja a bináris (C#) parancsmagokat, a speciális szkriptfunkciókat, a CDXML-t és a munkafolyamatokat.

Ez az SDK-dokumentáció a C# nyelven írt bináris parancsmagok létrehozási módszerét ismerteti. A szkriptalapú parancsmagokkal kapcsolatos információkért lásd:

Bináris parancsmag létrehozásához meg kell valósítanunk egy parancsmagosztályt, amely a parancsmagok két speciális alaposztályának egyikét származtatja. A származtatott osztálynak a következőnek kell lennie:

  • Deklarálhat egy attribútumot, amely parancsmagként azonosítja a származtatott osztályt.
  • Definiálja azokat a nyilvános tulajdonságokat, amelyek attribútumokkal vannak ékesítve, amelyek parancsmag-paraméterekként azonosítják a nyilvános tulajdonságokat.
  • Felülbírál egy vagy több bemeneti feldolgozási metódust a rekordok feldolgozásához.

A osztályt tartalmazó szerelvényt közvetlenül az Import-Module parancsmag használatával is betöltheti, vagy létrehozhat egy gazdaalkalmazá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.

Parancsmagok használati feltételei

A PowerShell-parancsmagok dokumentációjában gyakran a következő kifejezések használatosak:

Parancsmag-attribútum

Egy .NET-attribútum, amely parancsmagosztály parancsmagként való deklarálható. Bár a PowerShell számos más választható attribútumot is használ, a Parancsmag attribútumra is szükség van. További információ erről az attribútumról: Parancsmag-attribútumdeklaráció.

Parancsmag paraméter

A felhasználó vagy a parancsmagot futtató alkalmazás számára elérhető paramétereket meghatározó nyilvános tulajdonságok. A parancsmagok kötelező, elnevezett, pozíció- és kapcsolóparaméterekkel is rendelkezik. A kapcsolóparaméterekkel olyan paramétereket határozhat meg, amelyek csak akkor vannak kiértékelve, ha a paraméterek meg vannak adva a hívásban. További információ a különböző paramétertípusokról: Parancsmagparaméterek.

Paraméterkészlet

Paraméterek csoportja, amelyek egy adott művelet végrehajtásához használhatók ugyanabban a parancsban. Egy parancsmag több paraméterkészletből is lehet, de minden paraméterkészletnek legalább egy egyedi paraméterrel kell lennie. A parancsmagok jó kialakítása erősen azt sugallja, hogy az egyedi paraméter is kötelező paraméter. A paraméterkészletekkel kapcsolatos további információkért lásd: Parancsmag-paraméterkészletek.

Dinamikus paraméter

Egy paraméter, amely futásidőben lesz hozzáadva a parancsmaghoz. A dinamikus paraméterek általában akkor kerülnek a parancsmagba, ha egy másik paraméter egy adott értékre van beá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 következő virtuális metódusokat biztosítja a rekordok feldolgozásához. Az összes származtatott parancsmagosztálynak felül kell bírálni egy vagy több metódust:

További információ ezekről a módszerekről: Parancsmagok bemeneti feldolgozási módszerei.

Egy parancsmag megvalósításakor felül kell bírálni legalább egy ilyen bemeneti feldolgozási módszert. A ProcessRecord() metódust általában azért bírálja felül, mert a parancsmag által feldolgozott összes rekordhoz meg van hívva. Ezzel szemben a BeginProcessing() metódust és az EndProcessing() metódust egyszer hívják meg a rekordok előfeldolgozásához vagy utófeldolgozásához. További információ ezekről a módszerekről: Bemenetfeldolgozási módszerek.

ShouldProcess funkció

A PowerShell segítségével olyan parancsmagokat hozhat létre, amelyek visszajelzést kérnek a felhasználótól, mielőtt a parancsmag módosítja a rendszert. A funkció használatához a parancsmagnak deklarálnunk kell, hogy az támogatja-e a funkciót a Parancsmag attribútum deklarálható deklarálva, és a parancsmagnak meg kell hívnia ShouldProcess a System.Management.Automation.Cmdlet.ShouldProcess és System.Management.Automation.Cmdlet.ShouldContinue metódusokat a bemeneti feldolgozási metódusból. További információ a funkció ShouldProcess támogatásához: Megerősítés kérése.

Tranzakció

Parancsok logikai csoportja, amelyek egyetlen feladatként vannak kezelve. A feladat automatikusan meghiúsul, ha a csoport bármely parancsa meghiúsul, és a felhasználó választhat, hogy elfogadja vagy elutasítja a tranzakción belül végrehajtott műveleteket. Egy tranzakcióban való részvételhez a parancsmagnak deklarálva kell lennie, hogy támogatja a tranzakciókat a Parancsmag attribútum deklarálása esetén. A tranzakciók támogatása a 2.0 Windows PowerShell ban lett bevezetve. További információ a tranzakciókról: Tranzakciók támogatása.

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

A parancsmagok a következő módokon térnek el más parancshéj-környezetekben található parancsoktól:

  • A parancsmagok a .NET-osztályok példányai; nem önálló végrehajtható fájlok.
  • A parancsmagok akár egy tucat sornyi kódból is létre is hozhatóak.
  • A parancsmagok általában nem saját elemzési, hibabemeneti vagy kimeneti formázást futtatnak. Az elemzési, hibabemeneti és kimeneti formázást a PowerShell-futtatás kezeli.
  • A parancsmagok szövegstreamek helyett a folyamat bemeneti objektumát használják fel, és a parancsmagok általában kimenetként kézbesítik az objektumokat a folyamatnak.
  • A parancsmagok azért rekordorientáltak, mert egyszerre csak egyetlen objektumot feldolgoznak.

Parancsmag alaposztályok

Windows PowerShell a következő két alaposztályból származtatott parancsmagokat támogatja.

  • A legtöbb parancsmag a System.Management.Automation.Cmdlet alaposztályból származtatott .NET-osztályokon alapul. Az osztályból való származtatás lehetővé teszi, hogy a parancsmagok a minimális függőségkészletet használják a Windows PowerShell futtatáskor. Ennek két előnye van. Az első előny az, hogy a parancsmag objektumai kisebbek, és kevésbé valószínű, hogy a PowerShell-futtatás változásai hatással lesznek rá. A második előny az, hogy ha szükséges, közvetlenül létrehozhatja a parancsmag-objektum egy példányát, majd közvetlenül meghívhatja azt ahelyett, hogy a PowerShell-futtatáson keresztül hívna meg.

  • A bonyolultabb parancsmagok a System.Management.Automation.PSCmdlet alaposztályból származtatott .NET-osztályokon alapulnak. Az osztályból való származtatás sokkal több hozzáférést biztosít a PowerShell-futtatáshoz. Ez a hozzáférés lehetővé teszi, hogy a parancsmag szkripteket hívjon meg, hogy hozzáférjen a szolgáltatókhoz, és hozzáférjen az aktuális munkamenet-állapothoz. (Az aktuális munkamenet-állapot eléréséhez munkamenet-változókat és -beállításokat kap és ad meg.) Az osztályból való származtatás azonban növeli a parancsmag-objektum méretét, és ez azt jelenti, hogy a parancsmag szorosabban van a PowerShell-futtatás aktuális verziójához való.

Általában, hacsak nincs szüksége a PowerShell-futtatás kiterjesztett elérésére, a System.Management.Automation.Cmdlet osztályból kell származtatnunk. A PowerShell-futtatás azonban kiterjedt naplózási képességekkel rendelkezik a parancsmagok végrehajtáshoz. Ha a naplózási modell a naplózástól függ, megakadályozhatja a parancsmag végrehajtását egy másik parancsmagból a System.Management.Automation.PSCmdlet osztályból való származtatással.

Parancsmag-attribútumok

A PowerShell számos .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 használhatók, és amelyekre a parancsmagnak szüksége lehet. Az attribútumokkal például kijelölhet egy osztályt parancsmagként, megadhatja a parancsmag paramétereit, és kérheti a bemenet érvényesítését, így a parancsmag fejlesztőinek nem kell megvalósítaniuk ezt a funkciót a parancsmagkódjukban. További információ az attribútumokkal kapcsolatban: PowerShell-attribútumok.

Parancsmagok nevei

A PowerShell a parancsmagok elnevezése egy ige-főnév pár használatával történt. A PowerShellben található parancsmag például a parancshéjban regisztrált összes parancsmag Get-Command lekért nevére használható. A parancsmag 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űveletét.

Ezek a nevek akkor vannak megadva, amikor a .NET-osztály parancsmagként van deklarálva. A .NET-osztály parancsmagként való deklarállyal kapcsolatos további információkért lásd: Parancsmag-attribútumdeklaráció.

Parancsmagkód írása

Ez a dokumentum két módszert biztosít a parancsmagkód írásának felderítésére. Ha inkább magyarázat nélkül szeretné látni a kódot, lásd: Példák parancsmagkódra. Ha további magyarázatra van szükség a kóddal kapcsolatban, tekintse meg a GetProc-oktatóanyag, a StopProc-oktatóanyag, vagy a SelectStr-oktatóanyag témakört.

További információ a parancsmagok írásának irányelveiről: Cmdlet Development Guidelines ( Parancsmagfejlesztési útmutató).

Lásd még:

A PowerShell-parancsmagok fogalmai

PowerShell-parancsmag írása

PowerShell SDK