Lägga till alias, jokerteckenexpansion och hjälp i cmdlet-parametrarAdding Aliases, Wildcard Expansion, and Help to Cmdlet Parameters

I det här avsnittet beskrivs hur du lägger till alias, utökning av jokertecken och hjälp meddelanden till parametrarna i Stop-Proc-cmdleten (beskrivs i skapa en cmdlet som ändrar systemet).This section describes how to add aliases, wildcard expansion, and Help messages to the parameters of the Stop-Proc cmdlet (described in Creating a Cmdlet that Modifies the System).

Den här Stop-Proc cmdleten försöker stoppa processer som hämtas med hjälp av Get-Proc-cmdlet (beskrivs i skapa din första cmdlet).This Stop-Proc cmdlet attempts to stop processes that are retrieved using the Get-Proc cmdlet (described in Creating Your First Cmdlet).

Definiera cmdletenDefining the Cmdlet

Det första steget i att skapa en cmdlet namnger alltid cmdleten och deklarerar den .NET-klass som implementerar cmdleten.The first step in cmdlet creation is always naming the cmdlet and declaring the .NET class that implements the cmdlet. Eftersom du skriver en cmdlet för att ändra systemet bör den namnges.Because you are writing a cmdlet to change the system, it should be named accordingly. Eftersom denna cmdlet stoppar system processer använder den verbet "Stop", som definieras av klassen system. Management. Automation. Verbslifecycle , med Substantiv "proc" för att indikera processen.Because this cmdlet stops system processes, it uses the verb "Stop", defined by the System.Management.Automation.Verbslifecycle class, with the noun "Proc" to indicate process. Mer information om godkända cmdlet-verb finns i cmdlet-verb.For more information about approved cmdlet verbs, see Cmdlet Verb Names.

Följande kod är klass definitionen för den här Stop-Proc cmdleten.The following code is the class definition for this Stop-Proc cmdlet.

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

Definiera parametrar för system ändringDefining Parameters for System Modification

Din cmdlet måste definiera parametrar som stöder system ändringar och feedback från användare.Your cmdlet needs to define parameters that support system modifications and user feedback. Cmdleten bör definiera en Name parameter eller motsvarande så att cmdleten kan ändra systemet med en viss typ av identifierare.The cmdlet should define a Name parameter or equivalent so that the cmdlet will be able to modify the system by some sort of identifier. Dessutom bör cmdleten definiera Force PassThru parametrarna och.In addition, the cmdlet should define the Force and PassThru parameters. Mer information om dessa parametrar finns i skapa en cmdlet som ändrar systemet.For more information about these parameters, see Creating a Cmdlet that Modifies the System.

Definiera ett parameter Ali AsetDefining a Parameter Alias

Ett parameter Ali Aset kan vara ett alternativt namn eller ett väldefinierat kort namn eller kort namn för en cmdlet-parameter.A parameter alias can be an alternate name or a well-defined 1-letter or 2-letter short name for a cmdlet parameter. I båda fallen är syftet med att använda alias att förenkla användar posten från kommando raden.In both cases, the goal of using aliases is to simplify user entry from the command line. Windows PowerShell stöder parameter-alias via attributet system. Management. Automation. Aliasattribute , som använder deklarationssyntax [alias ()].Windows PowerShell supports parameter aliases through the System.Management.Automation.Aliasattribute attribute, which uses the declaration syntax [Alias()].

Följande kod visar hur ett alias läggs till i Name parametern.The following code shows how an alias is added to the Name parameter.

/// <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;

Förutom att använda attributet system. Management. Automation. Aliasattribute , utför Windows PowerShell-körningen partiell namn matchning, även om inga alias anges.In addition to using the System.Management.Automation.Aliasattribute attribute, the Windows PowerShell runtime performs partial name matching, even if no aliases are specified. Om din cmdlet till exempel har en FileName parameter och det är den enda parameter som börjar med F , kan användaren ange Filename ,,, Filenam File Fi eller F och fortfarande använda posten som FileName parameter.For example, if your cmdlet has a FileName parameter and that is the only parameter that starts with F, the user could enter Filename, Filenam, File, Fi, or F and still recognize the entry as the FileName parameter.

Skapar hjälp för parametrarCreating Help for Parameters

Med Windows PowerShell kan du skapa hjälp för cmdlet-parametrar.Windows PowerShell allows you to create Help for cmdlet parameters. Gör detta för alla parametrar som används för system ändringar och feedback från användare.Do this for any parameter used for system modification and user feedback. För varje parameter som stöd för hjälp kan du ange HelpMessage nyckelordet Attribute i deklarationen system. Management. Automation. Parameterattribute -attribut.For each parameter to support Help, you can set the HelpMessage attribute keyword in the System.Management.Automation.Parameterattribute attribute declaration. Det här nyckelordet definierar texten som ska visas för användaren för hjälp med att använda-parametern.This keyword defines the text to display to the user for assistance in using the parameter. Du kan också ange HelpMessageBaseName nyckelordet för att identifiera bas namnet för en resurs som ska användas för meddelandet.You can also set the HelpMessageBaseName keyword to identify the base name of a resource to use for the message. Om du anger det här nyckelordet måste du också ange ett HelpMessageResourceId nyckelord för att ange resurs-ID.If you set this keyword, you must also set the HelpMessageResourceId keyword to specify the resource identifier.

Följande kod från denna Stop-Proc-cmdlet definierar HelpMessage attributets nyckelord för Name parametern.The following code from this Stop-Proc cmdlet defines the HelpMessage attribute keyword for the Name parameter.

/// <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."
)]

Åsidosätta en metod för bearbetning av indataOverriding an Input Processing Method

Din cmdlet måste åsidosätta en metod för bearbetning av indata, oftast är detta system. Management. Automation. cmdlet. ProcessRecord.Your cmdlet must override an input processing method, most often this will be System.Management.Automation.Cmdlet.ProcessRecord. När du ändrar systemet bör cmdleten anropa metoden system. Management. Automation. cmdlet. ShouldProcess och system. Management. Automation. cmdlet. ShouldContinue för att tillåta användaren att ge feedback innan en ändring görs.When modifying the system, the cmdlet should call the System.Management.Automation.Cmdlet.ShouldProcess and System.Management.Automation.Cmdlet.ShouldContinue methods to allow the user to provide feedback before a change is made. Mer information om dessa metoder finns i skapa en cmdlet som ändrar systemet.For more information about these methods, see Creating a Cmdlet that Modifies the System.

Stöd för expansion med jokerteckenSupporting Wildcard Expansion

Om du vill tillåta att flera objekt väljs kan din cmdlet använda klassen system. Management. Automation. Wildcardpattern och system. Management. Automation. Wildcardoptions för att ge stöd för stöd för jokertecken för parameter ingångar.To allow the selection of multiple objects, your cmdlet can use the System.Management.Automation.Wildcardpattern and System.Management.Automation.Wildcardoptions classes to provide wildcard expansion support for parameter input. Exempel på mönster för jokertecken är LSA *, * . txt och [a-c] * .Examples of wildcard patterns are lsa*, *.txt, and [a-c]*. Använd det bakre citat tecknet (") som ett escape-tecken när mönstret innehåller ett tecken som ska användas bokstavligen.Use the back-quote character (`) as an escape character when the pattern contains a character that should be used literally.

Jokertecken för fil-och Sök vägs namn är exempel på vanliga scenarier där cmdleten kanske vill tillåta stöd för Path-indata när valet av flera objekt krävs.Wildcard expansions of file and path names are examples of common scenarios where the cmdlet may want to allow support for path inputs when the selection of multiple objects is required. Ett vanligt fall är i fil systemet, där en användare vill se alla filer som finns i den aktuella mappen.A common case is in the file system, where a user wants to see all files residing in the current folder.

Du bör ha en anpassad matchning av jokertecken som matchar implementeringen sällan.You should need a customized wildcard pattern matching implementation only rarely. I det här fallet ska din cmdlet ha stöd för antingen den fullständiga POSIX 1003,2, 3,13-specifikationen för expansion av jokertecken eller följande förenklade del mängd:In this case, your cmdlet should support either the full POSIX 1003.2, 3.13 specification for wildcard expansion or the following simplified subset:

  • Frågetecken (?).Question mark (?). Matchar alla bokstäver på den angivna platsen.Matches any character at the specified location.

  • Asterisk ( * ).Asterisk (*). Matchar noll eller flera tecken som börjar på den angivna platsen.Matches zero or more characters starting at the specified location.

  • Öppna hak paren tes ([).Open bracket ([). Introducerar ett mönster paren tes uttryck som kan innehålla tecken eller ett tecken intervall.Introduces a pattern bracket expression that can contain characters or a range of characters. Om ett intervall krävs används ett bindestreck (-) för att ange intervallet.If a range is required, a hyphen (-) is used to indicate the range.

  • Avslutande hak paren tes (]).Close bracket (]). Avslutar ett mönster paren tes uttryck.Ends a pattern bracket expression.

  • Escape-tecken för back citat (').Back-quote escape character (`). Anger att nästa Character ska tas i bokstavligen.Indicates that the next character should be taken literally. Tänk på att när du anger ett back citat tecken från kommando raden (i stället för att ange det program mässigt), måste Escape-tecknet för back-offerten anges två gånger.Be aware that when specifying the back-quote character from the command line (as opposed to specifying it programmatically), the back-quote escape character must be specified twice.

Anteckning

Mer information om mönster för jokertecken finns i stödjande jokertecken i cmdlet-parametrar.For more information about wildcard patterns, see Supporting Wildcards in Cmdlet Parameters.

Följande kod visar hur du ställer in jokertecken och definierar mönster för jokertecken som används för att matcha Name parametern för denna cmdlet.The following code shows how to set wildcard options and define the wildcard pattern used for resolving the Name parameter for this cmdlet.

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

Följande kod visar hur du testar om process namnet matchar det definierade jokertecken.The following code shows how to test whether the process name matches the defined wildcard pattern. Observera att, i det här fallet, om process namnet inte matchar mönstret, fortsätter cmdleten på för att hämta nästa process namn.Notice that, in this case, if the process name does not match the pattern, the cmdlet continues on to get the next process name.

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

Kod exempelCode Sample

Den fullständiga exempel koden för C# finns i StopProcessSample03-exempel.For the complete C# sample code, see StopProcessSample03 Sample.

Definiera objekt typer och formateringDefine Object Types and Formatting

Windows PowerShell skickar information mellan cmdlets med .net-objekt.Windows PowerShell passes information between cmdlets using .Net objects. Därför kan en cmdlet behöva definiera en egen typ, eller så kan cmdleten behöva utöka en befintlig typ som tillhandahålls av en annan cmdlet.Consequently, a cmdlet may need to define its own type, or the cmdlet may need to extend an existing type provided by another cmdlet. Mer information om hur du definierar nya typer eller utökar befintliga typer finns i utöka objekt typer och formatering.For more information about defining new types or extending existing types, see Extending Object Types and Formatting.

Skapa cmdletenBuilding the Cmdlet

När du har implementerat en cmdlet måste den vara registrerad med Windows PowerShell via en Windows PowerShell-snapin-modul.After implementing a cmdlet, it must be registered with Windows PowerShell through a Windows PowerShell snap-in. Mer information om att registrera cmdlets finns i så här registrerar du cmdlets, providers och värd program.For more information about registering cmdlets, see How to Register Cmdlets, Providers, and Host Applications.

Testa cmdletenTesting the Cmdlet

När din cmdlet har registrerats med Windows PowerShell kan du testa den genom att köra den på kommando raden.When your cmdlet has been registered with Windows PowerShell, you can test it by running it on the command line. Nu ska vi testa exemplet Stop-Proc cmdlet.Let's test the sample Stop-Proc cmdlet. Mer information om hur du använder cmdlets från kommando raden finns i komma igång med Windows PowerShell.For more information about using cmdlets from the command line, see the Getting Started with Windows PowerShell.

  • Starta Windows PowerShell och Använd Stop-Proc för att stoppa en process med hjälp av ProcessName-aliaset för Name parametern.Start Windows PowerShell and use Stop-Proc to stop a process using the ProcessName alias for the Name parameter.

    PS> stop-proc -ProcessName notepad
    

    Följande utdata visas.The following output appears.

    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
    
  • Gör följande på kommando raden.Make the following entry on the command line. Eftersom namn parametern är obligatorisk uppmanas du att ange den.Because the Name parameter is mandatory, you are prompted for it. Anger du "!?"Entering "!?" visar den hjälp text som är kopplad till parametern.brings up the help text associated with the parameter.

    PS> stop-proc
    

    Följande utdata visas.The following output appears.

    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
    
  • Gör nu följande post för att stoppa alla processer som matchar jokertecknet * Obs! * .Now make the following entry to stop all processes that match the wildcard pattern "*note*". Du uppmanas att stoppa varje process som matchar mönstret.You are prompted before stopping each process that matches the pattern.

    PS> stop-proc -Name *note*
    

    Följande utdata visas.The following output appears.

    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
    

    Följande utdata visas.The following output appears.

    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
    

    Följande utdata visas.The following output appears.

    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
    

Se ävenSee Also

Skapa en cmdlet som ändrar systemetCreate a Cmdlet that Modifies the System

Så här skapar du en Windows PowerShell-cmdletHow to Create a Windows PowerShell Cmdlet

Utöka objekt typer och formateringExtending Object Types and Formatting

Registrera cmdlets, providers och värd programHow to Register Cmdlets, Providers, and Host Applications

Stöd för jokertecken i cmdlet-parametrarSupporting Wildcards in Cmdlet Parameters

Windows PowerShell SDKWindows PowerShell SDK