Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Cmdlets kunnen verschillende soorten berichten schrijven die door de Windows PowerShell-runtime aan de gebruiker kunnen worden weergegeven. Deze berichten bevatten de volgende typen:
Uitgebreide berichten die algemene gebruikersgegevens bevatten.
Fouten opsporen in berichten die informatie over probleemoplossing bevatten.
Waarschuwingsberichten met een melding dat de cmdlet op het punt staat een bewerking uit te voeren die onverwachte resultaten kan hebben.
Voortgangsrapportberichten die informatie bevatten over hoeveel werk de cmdlet heeft voltooid bij het uitvoeren van een bewerking die lang duurt.
Er zijn geen limieten voor het aantal berichten dat uw cmdlet kan schrijven of het type berichten dat uw cmdlet schrijft. Elk bericht wordt geschreven door een specifieke aanroep uit te voeren vanuit de invoerverwerkingsmethode van uw cmdlet.
De cmdlet definiëren
De eerste stap bij het maken van de cmdlet is altijd de naamgeving van de cmdlet en het declareren van de .NET-klasse die de cmdlet implementeert. Elke soort cmdlet kan gebruikersmeldingen schrijven van de invoerverwerkingsmethoden; In het algemeen kunt u deze cmdlet een naam geven met behulp van een werkwoord dat aangeeft welke systeemwijzigingen de cmdlet uitvoert. Zie Cmdlet Verb Namesvoor meer informatie over goedgekeurde cmdlet-werkwoorden.
De Stop-Proc cmdlet is ontworpen om het systeem te wijzigen; Daarom moet de System.Management.Automation.CmdletAttribute- declaratie voor de .NET-klasse het trefwoord SupportsShouldProcess kenmerk bevatten en worden ingesteld op true.
De volgende code is de definitie voor deze Stop-Proc cmdlet-klasse. Zie Een cmdlet maken waarmee het systeemwordt gewijzigd voor meer informatie over deze definitie.
[Cmdlet(VerbsLifecycle.Stop, "proc",
SupportsShouldProcess = true)]
public class StopProcCommand : Cmdlet
Parameters definiëren voor systeemwijziging
De cmdlet Stop-Proc definieert drie parameters: Name, Forceen PassThru. Zie Een cmdlet maken waarmee het systeemwordt gewijzigd voor meer informatie over het definiëren van deze parameters.
Hier volgt de parameterdeclaratie voor de Stop-Proc cmdlet.
[Parameter(
Position = 0,
Mandatory = true,
ValueFromPipeline = true,
ValueFromPipelineByPropertyName = true
)]
public string[] Name
{
get { return processNames; }
set { processNames = value; }
}
private string[] processNames;
/// <summary>
/// Specify the Force parameter that allows the user to override
/// the ShouldContinue call to force the stop operation. This
/// parameter should always be used with caution.
/// </summary>
[Parameter]
public SwitchParameter Force
{
get { return force; }
set { force = value; }
}
private bool force;
/// <summary>
/// Specify the PassThru parameter that allows the user to specify
/// that the cmdlet should pass the process object down the pipeline
/// after the process has been stopped.
/// </summary>
[Parameter]
public SwitchParameter PassThru
{
get { return passThru; }
set { passThru = value; }
}
private bool passThru;
Een invoerverwerkingsmethode overschrijven
Uw cmdlet moet een invoerverwerkingsmethode overschrijven, meestal wordt deze System.Management.Automation.Cmdlet.ProcessRecord. Deze Stop-Proc cmdlet overschrijft de System.Management.Automation.Cmdlet.ProcessRecord invoerverwerkingsmethode. In deze implementatie van de Stop-Proc cmdlet worden aanroepen uitgevoerd om uitgebreide berichten te schrijven, berichten op te sporen en waarschuwingsberichten te waarschuwen.
Notitie
Zie Een cmdlet maken waarmee het systeemwordt gewijzigd voor meer informatie over hoe deze methode de System.Management.Automation.Cmdlet.ShouldContin ue aanroep t.
Een uitgebreid bericht schrijven
De methode System.Management.Automation.Cmdlet.WriteVerbose wordt gebruikt om algemene informatie op gebruikersniveau te schrijven die niet is gerelateerd aan specifieke foutvoorwaarden. De systeembeheerder kan die informatie vervolgens gebruiken om andere opdrachten te blijven verwerken. Daarnaast moet elke informatie die met deze methode wordt geschreven, worden gelokaliseerd indien nodig.
De volgende code van deze Stop-Proc cmdlet toont twee aanroepen naar de methode System.Management.Automation.Cmdlet.WriteVerbose van de onderdrukking van de methode System.Management.Automation.Cmdlet.ProcessRecord.
message = String.Format("Attempting to stop process \"{0}\".", name);
WriteVerbose(message);
message = String.Format("Stopped process \"{0}\", pid {1}.",
processName, process.Id);
WriteVerbose(message);
Een foutopsporingsbericht schrijven
De methode System.Management.Automation.Cmdlet.WriteDebug wordt gebruikt voor het schrijven van foutopsporingsberichten die kunnen worden gebruikt om problemen met de bewerking van de cmdlet op te lossen. De aanroep wordt uitgevoerd op basis van een invoerverwerkingsmethode.
Notitie
Windows PowerShell definieert ook een Debug parameter die uitgebreide en foutopsporingsgegevens weergeeft. Als uw cmdlet deze parameter ondersteunt, hoeft deze niet System.Management.Automation.Cmdlet.WriteDebug- aan te roepen in dezelfde code die System.Management.Automation.Cmdlet.WriteVerboseaanroept.
In de volgende twee secties met code uit de voorbeeld-Stop-Proc-cmdlet worden aanroepen weergegeven naar de methode System.Management.Automation.Cmdlet.WriteDebug uit de onderdrukking van de methode System.Management.Automation.Cmdlet.ProcessRecord.
Dit foutopsporingsbericht wordt direct geschreven voordat System.Management.Automation.Cmdlet.ShouldProcess wordt aangeroepen.
message =
String.Format("Acquired name for pid {0} : \"{1}\"",
process.Id, processName);
WriteDebug(message);
Dit foutopsporingsbericht wordt direct geschreven voordat System.Management.Automation.Cmdlet.WriteObject wordt aangeroepen.
message =
String.Format("Writing process \"{0}\" to pipeline",
processName);
WriteDebug(message);
WriteObject(process);
Windows PowerShell routeert automatisch alle System.Management.Automation.Cmdlet.WriteDebug aanroepen naar de traceringsinfrastructuur en cmdlets. Hierdoor kunnen de methodeaanroepen worden getraceerd naar de hostingtoepassing, een bestand of een foutopsporingsprogramma zonder dat u extra ontwikkelwerkzaamheden hoeft uit te voeren binnen de cmdlet. Met de volgende opdrachtregelvermelding wordt een traceringsbewerking geïmplementeerd.
PS> Trace-Expression Stop-Proc -File proc.log -Command Stop-Proc kladblok
Een waarschuwingsbericht schrijven
De methode System.Management.Automation.Cmdlet.WriteWarning wordt gebruikt om een waarschuwing te schrijven wanneer de cmdlet op het punt staat een bewerking uit te voeren die een onverwacht resultaat kan hebben, bijvoorbeeld het overschrijven van een bestand met het kenmerk Alleen-lezen.
De volgende code uit de voorbeeld-Stop-Proc cmdlet toont de aanroep naar de methode System.Management.Automation.Cmdlet.WriteWarning uit de onderdrukking van de methode System.Management.Automation.Cmdlet.ProcessRecord.
if (criticalProcess)
{
message =
String.Format("Stopping the critical process \"{0}\".",
processName);
WriteWarning(message);
} // if (criticalProcess...
Een voortgangsbericht schrijven
De System.Management.Automation.Cmdlet.WriteProgress wordt gebruikt om voortgangsberichten te schrijven wanneer cmdlet-bewerkingen een langere tijd in beslag nemen. Een aanroep van System.Management.Automation.Cmdlet.WriteProgress geeft een System.Management.Automation.Progressrecord-object door dat naar de hostingtoepassing wordt verzonden voor rendering naar de gebruiker.
Notitie
Deze Stop-Proc cmdlet bevat geen aanroep naar de System.Management.Automation.Cmdlet.WriteProgress methode.
De volgende code is een voorbeeld van een voortgangsbericht dat is geschreven door een cmdlet die een item probeert te kopiëren.
int myId = 0;
string myActivity = "Copy-item: Copying *.* to C:\abc";
string myStatus = "Copying file bar.txt";
ProgressRecord pr = new ProgressRecord(myId, myActivity, myStatus);
WriteProgress(pr);
pr.RecordType = ProgressRecordType.Completed;
WriteProgress(pr);
Codevoorbeeld
Zie StopProcessSample02 Samplevoor de volledige C#-voorbeeldcode.
Objecttypen en opmaak definiëren
Windows PowerShell geeft informatie door tussen cmdlets met behulp van .NET-objecten. Daarom moet een cmdlet mogelijk een eigen type definiëren of moet de cmdlet mogelijk een bestaand type uitbreiden dat door een andere cmdlet wordt geleverd. Zie Objecttypen en Opmaak uitbreidenvoor meer informatie over het definiëren van nieuwe typen of het uitbreiden van bestaande typen.
De cmdlet bouwen
Nadat u een cmdlet hebt geïmplementeerd, moet deze worden geregistreerd bij Windows PowerShell via een Windows PowerShell-module. Zie Cmdlets, providers en hosttoepassingen registrerenvoor meer informatie over het registreren van cmdlets.
De cmdlet testen
Wanneer uw cmdlet is geregistreerd bij Windows PowerShell, kunt u deze testen door deze uit te voeren op de opdrachtregel. We gaan de voorbeeld-Stop-Proc cmdlet testen. Zie de Aan de slag met Windows PowerShellvoor meer informatie over het gebruik van cmdlets vanaf de opdrachtregel.
De volgende opdrachtregelvermelding maakt gebruik van Stop-Proc om het proces met de naam 'KLADBLOK' te stoppen, uitgebreide meldingen op te geven en foutopsporingsgegevens af te drukken.
PS> Stop-Proc -Name notepad -Verbose -DebugDe volgende uitvoer wordt weergegeven.
VERBOSE: Attempting to stop process " notepad ". DEBUG: Acquired name for pid 5584 : "notepad" Confirm Continue with this operation? [Y] Yes [A] Yes to All [H] Halt Command [S] Suspend [?] Help (default is "Y"): Y Confirm Are you sure you want to perform this action? Performing operation "Stop-Proc" on Target "notepad (5584)". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Y VERBOSE: Stopped process "notepad", pid 5584.
Zie ook
een cmdlet maken die het systeem wijzigt
Een Windows PowerShell-cmdlet maken
objecttypen en opmaak uitbreiden