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


Aliasok, helyettesítő bővítők és súgó hozzáadása a parancsmag-paraméterekhez

Ez a szakasz azt ismerteti, hogyan adhat hozzá aliasokat, helyettesítő karaktereket és súgóüzeneteket a Stop-Proc parancsmag paramétereihez (a rendszer módosító parancsmag létrehozása).

Ez a Stop-Proc parancsmag megpróbálja leállítani a Get-Proc parancsmaggal lekért folyamatokat (a Az első parancsmag létrehozásacímű cikkben).

A parancsmag definiálása

A parancsmag létrehozásának első lépése mindig a parancsmag elnevezése és a parancsmagot implementáló .NET-osztály deklarálása. Mivel egy parancsmagot ír a rendszer módosításához, ennek megfelelően kell elneveznie. Mivel ez a parancsmag leállítja a rendszerfolyamatokat, a System.Management.Automation.VerbsLifecycle osztály által definiált Stopparancsot használja a folyamat jelzésére Proc főnévvel. A jóváhagyott parancsmag-parancsmagokkal kapcsolatos további információkért lásd parancsmagok parancsmagjának nevei.

A következő kód a Stop-Proc parancsmag osztálydefiníciója.

[Cmdlet(VerbsLifecycle.Stop, "proc",
        SupportsShouldProcess = true)]
public class StopProcCommand : Cmdlet

A rendszermódosítás paramétereinek meghatározása

A parancsmagnak olyan paramétereket kell meghatároznia, amelyek támogatják a rendszermódosításokat és a felhasználói visszajelzéseket. A parancsmagnak meg kell határoznia egy Name paramétert vagy azzal egyenértékű paramétert, hogy a parancsmag valamilyen azonosítóval módosíthassa a rendszert. Emellett a parancsmagnak meg kell határoznia a Force és PassThru paramétereket. További információ ezekről a paraméterekről: A rendszermódosító parancsmag létrehozása.

Paraméter aliasának definiálása

A paraméter aliasa lehet alternatív név, vagy egy parancsmagparaméter jól definiált egybetűs vagy kétbetűs rövid neve. Mindkét esetben az aliasok használatának célja a parancssorból történő felhasználói bevitel egyszerűsítése. A Windows PowerShell a paraméter-aliasokat a System.Management.Automation.AliasAttribute attribútumon keresztül támogatja, amely a deklarációs szintaxist [Alias()]használja.

Az alábbi kód bemutatja, hogyan ad hozzá aliast a Név paraméterhez.

/// <summary>
/// Specify the mandatory Name parameter used to identify the
/// processes to be stopped.
/// </summary>
[Parameter(
           Position = 0,
           Mandatory = true,
           ValueFromPipeline = true,
           ValueFromPipelineByPropertyName = true,
           HelpMessage = "The name of one or more processes to stop. Wildcards are permitted."
)]
[Alias("ProcessName")]
public string[] Name
{
  get { return processNames; }
  set { processNames = value; }
}
private string[] processNames;

A System.Management.Automation.AliasAttribute attribútum használata mellett a Windows PowerShell-futtatókörnyezet részleges névegyezést hajt végre, még akkor is, ha nincs megadva alias. Ha például a parancsmag egy FileName paraméterrel rendelkezik, és ez az egyetlen paraméter, amely Fkezdődik, a felhasználó megadhat Filename, Filenam, File, Fivagy F, és továbbra is felismerheti a bejegyzést a FileName paraméterként.

Súgó létrehozása paraméterekhez

A Windows PowerShell lehetővé teszi a parancsmagparaméterek súgójának létrehozását. Ezt a rendszermódosításhoz és a felhasználói visszajelzésekhez használt paraméterek esetében végezze el. Ha minden paraméter támogatja a súgót, beállíthatja a HelpMessage attribútum kulcsszót a System.Management.Automation.ParameterAttribute attribútum deklarációjában. Ez a kulcsszó határozza meg a felhasználó számára megjelenítendő szöveget, hogy segítséget kérhessenek a paraméter használatához. A HelpMessageBaseName kulcsszót is beállíthatja az üzenethez használni kívánt erőforrás alapnevének azonosításához. Ha ezt a kulcsszót állítja be, a HelpMessageResourceId kulcsszót is be kell állítania az erőforrás-azonosító megadásához.

A Stop-Proc parancsmag alábbi kódja határozza meg a HelpMessage attribútum kulcsszót a Name paraméterhez.

/// <summary>
/// Specify the mandatory Name parameter used to identify the
/// processes to be stopped.
/// </summary>
[Parameter(
           Position = 0,
           Mandatory = true,
           ValueFromPipeline = true,
           ValueFromPipelineByPropertyName = true,
           HelpMessage = "The name of one or more processes to stop. Wildcards are permitted."
)]

Bemeneti feldolgozási módszer felülírása

A parancsmagnak felül kell bírálnia egy bemeneti feldolgozási módszert, leggyakrabban ez System.Management.Automation.Cmdlet.ProcessRecord. A rendszer módosításakor a parancsmagnak meghívnia kell a System.Management.Automation.Cmdlet.ShouldProcess és System.Management.Automation.Cmdlet.ShouldContinue metódusokat, hogy a felhasználó visszajelzést küldjön a módosítás előtt. További információ ezekről a módszerekről: A rendszermódosító parancsmag létrehozása.

Helyettesítő karakterek kibővítésének támogatása

Több objektum kiválasztásának engedélyezéséhez a parancsmag a System.Management.Automation.WildcardPattern és System.Management.Automation.WildcardOptions osztályokkal támogatja a paraméterbevitelt helyettesítő karaktereket. A helyettesítő karakterek mintái például lsa*, *.txtés [a-c]*. Az idézőjelet (`) akkor használja menekülési karakterként, ha a minta tartalmaz egy olyan karaktert, amelyet szó szerint kell használni.

A fájl- és elérésiút-nevek helyettesítő karakterekkel történő bővítése olyan gyakori forgatókönyvek, amikor a parancsmag támogatni szeretné az elérésiút-bemeneteket, ha több objektum kijelölésére van szükség. Gyakori eset a fájlrendszerben, ahol a felhasználó látni szeretné az aktuális mappában található összes fájlt.

Csak ritkán kell testre szabott helyettesítő karaktermintát alkalmaznia. Ebben az esetben a parancsmagnak vagy a teljes POSIX 1003.2, 3.13 specifikációt kell támogatnia a helyettesítő karakterek bővítéséhez, vagy a következő egyszerűsített részhalmazt:

  • Kérdőjel (?). Egyezik a megadott helyen található bármely karakternel.
  • Csillag (*). A megadott helyen kezdődő nulla vagy több karaktert egyezik meg.
  • Zárójel megnyitása ([). Olyan minta zárójelkifejezést vezet be, amely karaktereket vagy karaktertartományokat tartalmazhat. Ha tartományra van szükség, egy kötőjel (-) jelzi a tartományt.
  • Szögletes zárójel (]). Egy zárójeles mintakifejezés vége.
  • Back-quote escape character (`). Azt jelzi, hogy a következő karaktert szó szerint kell venni. Vegye figyelembe, hogy ha a parancssorból adja meg a vissza idézőjel karaktert (és nem programozott módon adja meg), a vissza idézőjel feloldó karakterét kétszer kell megadni.

Megjegyzés

A helyettesítő karakterek mintáiról további információt a Helyettesítő karakterek támogatása a parancsmag paramétereibencímű témakörben talál.

Az alábbi kód bemutatja, hogyan állíthat be helyettesítő karaktereket, és hogyan definiálhatja a parancsmag Name paraméterének feloldásához használt helyettesítő karaktermintát.

WildcardOptions options = WildcardOptions.IgnoreCase |
                          WildcardOptions.Compiled;
WildcardPattern wildcard = new WildcardPattern(name,options);

Az alábbi kód bemutatja, hogyan tesztelheti, hogy a folyamat neve megegyezik-e a definiált helyettesítő karaktermintával. Figyelje meg, hogy ebben az esetben, ha a folyamat neve nem egyezik a mintával, a parancsmag továbbra is megkapja a következő folyamatnevet.

if (!wildcard.IsMatch(processName))
{
  continue;
}

Kódminta

A teljes C#-mintakódért tekintse meg StopProcessSample03 Minta.

Objektumtípusok és formázás definiálása

A Windows PowerShell .NET-objektumokkal továbbítja az adatokat a parancsmagok között. Következésképpen előfordulhat, hogy egy parancsmagnak meg kell határoznia a saját típusát, vagy előfordulhat, hogy a parancsmagnak ki kell terjesztenie egy másik parancsmag által biztosított meglévő típust. További információ az új típusok definiálásáról vagy a meglévő típusok kibővítéséről: Objektumtípusok és formázás kiterjesztése.

A parancsmag létrehozása

A parancsmag implementálása után egy Windows PowerShell beépülő modulon keresztül regisztrálnia kell azt a Windows PowerShellben. A parancsmagok regisztrálásáról további információt a parancsmagok, szolgáltatók és gazdagépalkalmazások .

A parancsmag tesztelése

Ha a parancsmag regisztrálva lett a Windows PowerShellben, a parancssorban futtatva tesztelheti. Teszteljük a minta Stop-Proc parancsmagot. A parancssori parancsmagok használatáról további információt a Windows PowerShell – első lépések című témakörben talál.

  • Indítsa el a Windows PowerShellt, és Stop-Proc használatával állítsa le a folyamatot a Name paraméter ProcessName aliasával.

    PS> Stop-Proc -ProcessName notepad
    

    Megjelenik a következő kimenet.

    Confirm
    Are you sure you want to perform this action?
    Performing operation "Stop-Proc" on Target "notepad (3496)".
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y
    
  • Végezze el a következő bejegyzést a parancssorban. Mivel a Név paraméter kötelező, a rendszer rákérdez. A !? beírásával megjelenik a paraméterhez társított súgószöveg.

    PS> Stop-Proc
    

    Megjelenik a következő kimenet.

    Cmdlet Stop-Proc at command pipeline position 1
    Supply values for the following parameters:
    (Type !? for Help.)
    Name[0]: !?
    The name of one or more processes to stop. Wildcards are permitted.
    Name[0]: notepad
    
  • Most állítsa le az összes olyan folyamatot, amely megfelel a helyettesítő karaktermintának *note*. A rendszer minden olyan folyamat leállítása előtt kéri, amely megfelel a mintának.

    PS> Stop-Proc -Name *note*
    

    Megjelenik a következő kimenet.

    Confirm
    Are you sure you want to perform this action?
    Performing operation "Stop-Proc" on Target "notepad (1112)".
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y
    

    Megjelenik a következő kimenet.

    Confirm
    Are you sure you want to perform this action?
    Performing operation "Stop-Proc" on Target "ONENOTEM (3712)".
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): N
    

    Megjelenik a következő kimenet.

    Confirm
    Are you sure you want to perform this action?
    Performing operation "Stop-Proc" on Target "ONENOTE (3592)".
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): N
    

Lásd még: