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

Ez a szakasz bemutatja, hogyan adhat aliasokat, helyettesítő karaktereket és súgóüzeneteket a Stop-Proc parancsmag paramétereihez (a Rendszer módosításával foglalkozó parancsmag létrehozása című témakörben).

Ez a Stop-Proc parancsmag megkísérli leállítani a Get-Proc parancsmaggal lekért folyamatokat (erről az Első parancsmag létrehozása című szakaszban olvashat).

A parancsmag meghatározása

A parancsmagok 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 elnevezni. Mivel ez a parancsmag leállítja a rendszerfolyamatokat, a System.Management.Automation.Verbslifecycle osztály által meghatározott Stop parancsot használja a folyamat jelzésére szolgáló Proc főnévvel. A jóváhagyott parancsmag-parancsmagokkal kapcsolatos további információkért lásd: Parancsmagok parancsmagjának nevei.

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

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

Paraméterek meghatározása a rendszermódosításhoz

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 adnia egy névparamétert vagy azzal egyenértékűt, hogy a parancsmag valamilyen azonosítóval módosíthassa a rendszert. Emellett a parancsmagnak meg kell határoznia a Force és a PassThru paramétereket. További információ ezekről a paraméterekről: Rendszermódosító parancsmag létrehozása.

Paraméteralias definiálása

A paraméteralias 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 való felhasználói bevitel egyszerűsítése. Windows PowerShell a System.Management.Automation.Aliasattribute attribútumon keresztül támogatja a paraméteraliasokat, amelyek a deklarációs szintaxist használják[Alias()].

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évegyeztetéseket is végez, még akkor is, ha nincsenek megadva aliasok. Ha például a parancsmag rendelkezik FileName paraméterrel F, és ez az egyetlen olyan paraméter, amely kezdődik, a felhasználó beírhatja Filename, Filenam, File, Fivagy F továbbra is felismerheti a bejegyzést FileName paraméterként.

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

Windows PowerShell lehetővé teszi, hogy súgót hozzon létre a parancsmag paramétereihez. Ezt a rendszermódosításhoz és a felhasználói visszajelzésekhez használt paraméterek esetében végezze el. A súgót támogató minden paraméterhez beállíthatja a HelpMessage attribútum kulcsszót a System.Management.Automation.Parameterattribute attribútumdeklarációban. Ez a kulcsszó határozza meg a felhasználó számára megjelenítendő szöveget, hogy segítséget nyújtsunk a paraméter használatához. Beállíthatja a HelpMessageBaseName kulcsszót is, hogy azonosítsa az üzenethez használandó erőforrás alapnevét. 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 parancsmag alábbi kódja Stop-Proc határozza meg a HelpMessage attribútum kulcsszójá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. Ez leggyakrabban System.Management.Automation.Cmdlet.ProcessRecord lesz. A rendszer módosításakor a parancsmagnak meg kell hívnia a System.Management.Automation.Cmdlet.ShouldProcess és a System.Management.Automation.Cmdlet.ShouldContinue metódust, 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 rendszert módosító parancsmag létrehozása.

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

Több objektum kijelölésének engedélyezéséhez a parancsmag a System.Management.Automation.WildcardPattern és a System.Management.Automation.WildcardOptions osztályokkal támogatja a paraméterbemenetet. Helyettesítő karakterek mintái például a lsa*következők: , *.txtés [a-c]*. A visszajeljeles karaktert (`) akkor használja feloldó karakterként, ha a minta olyan karaktert tartalmaz, amelyet szó szerint kell használni.

A fájl- és elérésiút-nevek helyettesítő karakteres kiterjesztései olyan gyakori forgatókönyvek, amikor a parancsmag több objektum kijelölése esetén engedélyezni szeretné az elérésiút-bemenetek támogatását. Gyakori eset a fájlrendszerben, ahol a felhasználó az aktuális mappában található összes fájlt látni szeretné.

Az implementációnak csak ritkán kell testre szabott helyettesítő karaktermintát alkalmaznia. Ebben az esetben a parancsmagnak vagy a teljes POSIX 1003.2 és 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 (?). A megadott helyen található bármely karakternek megfelel.
  • Csillag (*). Nulla vagy több karaktert ad meg a megadott helyen kezdődően.
  • Nyitó szögletes zárójel ([). Bemutatja a mintás zárójeles kifejezést, amely karaktereket vagy karaktertartományokat tartalmazhat. Ha tartományra van szükség, kötőjel (-) jelzi a tartományt.
  • Zárja be a szögletes zárójelet (]). Egy zárójeles mintakifejezés vége.
  • Idézőjeles feloldó karakter (`). Azt jelzi, hogy a következő karaktert szó szerint kell venni. Vegye figyelembe, hogy ha a parancssorból adja meg az idézőjeles idézőjel karaktert (és nem programozott módon adja meg), a visszajeles idézőjel feloldó karakterét kétszer kell megadni.

Megjegyzés

A helyettesítő karakterek mintáival kapcsolatos további információkért lásd: Helyettesítő karakterek támogatása a parancsmag paramétereiben.

Az alábbi kód bemutatja, hogyan állíthat be helyettesítő karaktereket, és hogyan határozhatja meg 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 meg 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 lásd: StopProcessSample03 Minta.

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

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 a parancsmagnak ki kell terjesztenie egy másik parancsmag által biztosított meglévő típust. Az új típusok definiálásáról és a meglévő típusok kiterjesztéséről további információt az Objektumtípusok és formázás kiterjesztése című témakörben talál.

A parancsmag létrehozása

A parancsmag implementálása után egy Windows PowerShell beépülő modulon keresztül regisztrálni kell azt Windows PowerShell. A parancsmagok regisztrálásával kapcsolatos további információkért lásd: Parancsmagok, szolgáltatók és gazdagépalkalmazások regisztrálása.

A parancsmag tesztelése

Ha a parancsmag regisztrálva lett a Windows PowerShell, a parancssorban futtatva tesztelheti. Teszteljük a minta Stop-Proc parancsmagot. A parancssorból származó parancsmagok használatáról további információt a Windows PowerShell Első lépések talál.

  • Start menü Windows PowerShell és használatával Stop-Proc állítsa le a folyamatot a Name paraméter ProcessName aliasával.

    PS> Stop-Proc -ProcessName notepad
    

    A következő kimenet jelenik meg.

    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 !? megjeleníti a paraméterhez társított súgószöveget.

    PS> Stop-Proc
    

    A következő kimenet jelenik meg.

    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 tegye a következő bejegyzést a helyettesítő karaktermintának *note*megfelelő összes folyamat leállításához. A rendszer minden olyan folyamat leállítása előtt kéri, amely megfelel a mintának.

    PS> Stop-Proc -Name *note*
    

    A következő kimenet jelenik meg.

    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
    

    A következő kimenet jelenik meg.

    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
    

    A következő kimenet jelenik meg.

    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: