Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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-Prochasználatával állítsa le a folyamatot a Name paraméter ProcessName aliasával.PS> Stop-Proc -ProcessName notepadMegjelenik 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"): YVé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-ProcMegjelenik 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]: notepadMost á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"): YMegjelenik 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"): NMegjelenik 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