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
, Fi
vagy 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:
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: